2012-05-11 53 views
34

我想徹底去除標籤爲面,以產生一種火花效果,爲觀衆的標籤是不相關的,最好我能想出是:刪除facet_wrap標籤完全

library(MASS) 
library(ggplot2) 
qplot(week,y,data=bacteria,group=ID, geom=c('point','line'), xlab='', ylab='') + 
    facet_wrap(~ID) + 
    theme(strip.text.x = element_text(size=0)) 

那麼我可以完全擺脫(現在空白)strip.background,以允許更多空間的「sparklines」?

或者,是否有更好的方法來獲得這個「sparkline」效果像這樣的大量二值時間序列?

回答

55

對於ggplot V2.1.0或更高版本,使用element_blank()刪除不需要的元素:

library(MASS) # To get the data 
library(ggplot2) 

qplot(
    week, 
    y, 
    data = bacteria, 
    group = ID, 
    geom = c('point', 'line'), 
    xlab = '', 
    ylab = '' 
) + 
facet_wrap(~ ID) + 
theme(
    strip.background = element_blank(), 
    strip.text.x = element_blank() 
) 

在這種情況下,你想刪除的元素被稱爲strip

ggplot2 figure without panel titles


替代使用ggplot GROB佈局

在舊版本的ggplot(V2.1.0)之前,條帶文字在gtable佈局佔據的行。

element_blank刪除文本和背景,但它不會刪除該行佔據的空間。

此代碼從佈局中移除這些行:

library(ggplot2) 
library(grid) 

p <- qplot(
    week, 
    y, 
    data = bacteria, 
    group = ID, 
    geom = c('point', 'line'), 
    xlab = '', 
    ylab = '' 
) + 
facet_wrap(~ ID) 

# Get the ggplot grob 
gt <- ggplotGrob(p) 

# Locate the tops of the plot panels 
panels <- grep("panel", gt$layout$name) 
top <- unique(gt$layout$t[panels]) 

# Remove the rows immediately above the plot panel 
gt = gt[-(top-1), ] 

# Draw it 
grid.newpage() 
grid.draw(gt) 
+0

其他人正在應用錯誤(strip_mat,1,max_height): dim(X)必須具有正長度嗎? – PatrickT

4

儘可能靠近我可以告訴大家,桑迪的回答是正確的,但我認爲這是值得一提的是,似乎有一個小的差異曲線的寬度沒有小平面和刪除小平面的情節的寬度。

除非你正在尋找它,否則它並不明顯,但如果你使用Wickham在他的書中推薦的視口布局來堆積情節,那麼區別就會變得明顯。

+1

你能用一個例子來詳細說明嗎? – mnel

+0

嗯。我們來看看...... –

+0

這裏我們去 - 試試[link](http:// pastebin。COM/xJedJr1b)。我使用ggplot的「鑽石」數據集,因此它適用於任何人。請注意,曲面圖的右邊距比無曲面圖略窄。 –

19

我正在使用ggplot2版本1,並且所需的命令已更改。取而代之的

ggplot() ... + 
opts(strip.background = theme_blank(), strip.text.x = theme_blank()) 

你現在使用

ggplot() ... + 
theme(strip.background = element_blank(), strip.text = element_blank()) 

更多細節見http://docs.ggplot2.org/current/theme.html

2

桑迪的更新答案似乎不錯,但可能已經過時的更新ggplot?從我可以告訴下面的代碼(桑迪的原始回答的簡化版本)再現肖恩的原始圖形,沒有任何額外的空間:

library(ggplot2) 
library(grid) 
qplot(week,y,data=bacteria,group=ID, geom=c('point','line'), xlab='', ylab='') + 
facet_wrap(~ID) + 
theme(strip.text.x = element_blank()) 

我使用ggplot 2.0.0。