2011-09-18 37 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,關於指定線類型的說明的部分。