Как я могу подавить вертикальные линии сетки на графике ggplot2? - PullRequest
62 голосов
/ 20 апреля 2010

Я строю гистограмму, для которой достаточно столбцов в качестве указателей горизонтального (x) размещения, поэтому я бы хотел избежать рисования лишних вертикальных линий сетки.

Я понимаю, как стилизовать второстепенные и основные линии сетки в opts (), но я не могу понять, как подавить только вертикальные линии сетки.

library(ggplot2)

data <- data.frame(x = 1:10, y = c(3,5,2,5,6,2,7,6,5,4))

ggplot(data, aes(x, y)) +
  geom_bar(stat = 'identity') +
  opts(
    panel.grid.major = theme_line(size = 0.5, colour = '#1391FF'),
    panel.grid.minor = theme_line(colour = NA),
    panel.background = theme_rect(colour = NA),
    axis.ticks = theme_segment(colour = NA)
  )

На данный момент мне кажется, что мне придется подавить все линии сетки, а затем нарисовать их обратно с помощью geom_hline (), что кажется болезненным (также не совсем понятно, как я могу найти позиции галочки / основной линии сетки для подачи в geom_hline ().)

Любые мысли приветствуются!

Ответы [ 4 ]

132 голосов
/ 24 января 2012

Начиная с ggplot2 0.9.2, это стало намного проще в использовании "тем".Теперь вы можете назначать темы отдельно для panel.grid.major.x и panel.grid.major.y, как показано ниже.

#   simulate data for the bar graph
data <- data.frame( X = c("A","B","C"), Y = c(1:3) )    

#   make the bar graph
ggplot( data  ) +
    geom_bar( aes( X, Y ) ) +
    theme( # remove the vertical grid lines
           panel.grid.major.x = element_blank() ,
           # explicitly set the horizontal lines (or they will disappear too)
           panel.grid.major.y = element_line( size=.1, color="black" ) 
    )

Результат этого примера выглядит довольно некрасиво, но он демонстрирует, как удалять вертикальные линии, сохраняя при этом горизонтальные линии и отметки по оси x.

13 голосов
/ 21 апреля 2010

Попробуйте использовать

scale_x_continuous (breaks = NULL)

Это удалит все вертикальные линии сетки, а также метки отметок оси X.

5 голосов
/ 28 ноября 2010

См. Редактирование уровня сетки для другой опции:

https://github.com/hadley/ggplot2/wiki/Editing-raw-grid-objects-from-a-ggplot

4 голосов
/ 10 марта 2011

Это оставляет вас только с точками данных:

ggplot(out, aes(X1, X2)) + 
    geom_point() + 
    scale_x_continuous(breaks = NULL) + 
    scale_y_continuous(breaks = NULL) + 
    opts(panel.background = theme_blank()) + 
    opts(axis.title.x = theme_blank(), axis.title.y = theme_blank())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...