问题
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