2015-09-18 12 views
6

Chciałbym drukować prostokąty, ale mam oś X, która jest dyskretna. Jak ustawić wartości xmin i xmax, aby rozpocząć od punktu pomiędzy dyskretnymi wartościami?Jak używać funkcji geom_rect z dyskretnymi wartościami osi

library(ggplot2) 
df <- data.frame(x = c("a","b","c"), y = c(1,2,3)) 
ggplot(data = df) + geom_rect(data = NULL, aes(xmin = "b", xmax = "c", ymin = 1.5, ymax = 2.5)) 

Ten kod rysuje prostokąt, ale chciałbym przesunąć go nieco w lewo. Chciałbym móc ustawić xmin = "b" -0,3 i xmax = "b" +0,3, jeśli ma to sens.

Odpowiedz

7

Można spróbować:

ggplot(data = df) + 
    geom_rect(data = df, aes(x = x, y=y), xmin = as.numeric(df$x[[2]]) - 0.3, 
             xmax = as.numeric(df$x[[3]]) + 0.3, 
             ymin = 0, ymax = 2) 

To działa, jakby nazwać Xmin i Xmax etc poza wezwanie aes, można użyć co chcesz. Poziomy czynnika są używane na wykresie, aby je wykreślić, więc as.numeric zapewni, że otrzymasz właściwy.

+0

Dzięki @jeremycg, która odpowiada na moje pytanie i działa! Dziękuję również za wskazówkę, że poziomy czynników są używane. – Mist

Powiązane problemy