2012-05-11 10 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を完全に削除することはできますか?

また、このような2進数の時系列の数が多い場合は、この "sparkline"の効果を得る良い方法がありますか? ggplotのバージョン2.1.0以上の場合

答えて

55

、不要な要素を削除するために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と呼ばれています。 (バージョン2.1.0以前)ggplotの古いバージョンでggplotのグロブレイアウト

を用い

ggplot2 figure without panel titles


代替、ストリップテキストは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

Hmm。見てみましょう... –

+0

ここに行きます。[リンク](http:// pastebin。com/xJedJr1b)。私はggplotの 'diamonds'データセットを使用するので、誰にでも使えるはずです。面取りされたグラフの右の余白は、面倒なグラフよりわずかに狭いことに注意してください。 –

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するアップデートによって時代遅れされた、良いようだが?私は、次のコード(サンディのオリジナルの答えの簡易版を)伝えることができるものから任意の余分なスペースなしショーンの元のグラフを再現:私はggplot 2.0.0を使用しています

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

関連する問題