2011-09-18 97 views
4

是否有可能操纵使用主题在ggplot虚线和点格子线的间距和大小?如下图:主题操纵GGPLOT2:改变x和y网格线

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')) 

我想更改虚线和虚线网格线之间的间距(例如在Illustrator中)。

此外,没有人知道是否在x轴和y轴的网格线可以分别操纵?例如,我想在这个例子中关闭x轴网格线。

我已经看到了使用U电源和HLINE(Add a dotted vertical line on certain x-axis values using ggplot)操作,但不希望如果可能的话,每次都要有硬编码。

dashed line

+0

我删除我的答案,因为我相信我误解你了。你是否说你想让虚线包含间隔更远的破折号? – joran

+0

@joran是的,确切地说。例如,在Illustrator中,可以设置虚线和虚线的间距。我想知道这是否也可以在ggplot中以系统化方式进行。此外,我想完全移除x轴主要网格线 - 即。应该只有水平网格线。 –

回答

6

您可以使用lty力量。看到线路类型规格?par

例如:

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

至于第二个问题,在这个时候不能分别指定V和H行。
这里是一个快速和肮脏的黑客:

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

现在,我明白你的要求,我想,也许这说明你在找什么:

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"))) 

enter image description here

线型规格有点复杂。见?par,关于指定线类型的说明的部分。