2010-04-20 49 views
47

我正在構建一個條形圖,其中條形足以作爲水平(x)放置的指示,所以我想避免繪製多餘的垂直網格線。如何在ggplot2圖中抑制垂直網格線?

我明白如何設計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(),這似乎是一種痛苦(也是吸引他們回來,這是不完全清楚我怎麼能找到tick /主要網格線位置飼料geom_hline()。)

任何想法將不勝感激!

回答

11

使用try

scale_x_continuous(斷裂= NULL)

這將去除所有的垂直網格線,以及x軸對勾標記標籤。

+4

這樣做了,但現在,如您所述,我沒有x軸標籤,我需要 - 關於如何將它們寫回的任何想法? – Tarek 2010-04-21 16:49:39

+1

geom_text(aes(label = x,y = -.5)) 應該可以工作 – learnr 2010-04-21 19:06:38

+17

新版本說:'請使用breaks = NULL來刪除刻度中的斷點。 (棄用;最後在版本0.8.9中使用)' – 2013-08-07 21:07:41

4

這使您只有在數據點:

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()) 
95

由於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軸勾號標記。