Theme manipulation in ggplot2: altering x and y grid lines

时间秒杀一切 提交于 2019-12-10 15:54:24

问题


Is it possible to manipulate the spacing and size of dashed and dotted grid lines in ggplot using the themes? The following plot:

p + l + opts(panel.grid.major = theme_line(colour = 'black', linetype = 'dashed'), 
             panel.grid.minor = theme_line(colour = NA), 
             panel.background = theme_rect(colour = 'white'))

I'd like to change the spacing (such as in Illustrator) between dashed and dotted grid lines.

Additionally, does anyone know if the x-axis and y-axis grid lines can be manipulated separately? For instance, I want to turn off the x-axis grid lines in this example.

I have seen manipulation using vline and hline (Add a dotted vertical line on certain x-axis values using ggplot), but don't want to have to hard code that each time if possible.


回答1:


You can use the power of lty. see Line Type Specification in ?par.

example:

qplot(1:5, 1:5) + opts(panel.grid.major = theme_line(linetype = "2925"))

As for the second question, at this time you cannot specify the v and h lines separately.
Here is a quick and dirty hack:

qplot(1:5, 1:5)
grid.edit("panel.grid.major.x.polyline", grep = TRUE, gp = gpar(lty = "5195"))
grid.edit("panel.grid.major.y.polyline", grep = TRUE, gp = gpar(lty = "33"))



回答2:


Now that I understand what you're asking, I think maybe this demonstrates what you're looking for:

dat <- data.frame(x = 1:10, y = 1:10)

ggplot(dat,aes(x = x, y = y)) + 
    geom_point() + 
    scale_y_continuous(breaks = NA) +
    opts(panel.grid.major = theme_line(linetype = c("28")))

The linetype specification is a little complicated. See ?par, the section on specifying line types for an explanation.



来源:https://stackoverflow.com/questions/7465233/theme-manipulation-in-ggplot2-altering-x-and-y-grid-lines

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!