web-dev-qa-db-ja.com

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を完全に削除できますか?

あるいは、このような多数のバイナリ値の時系列に対して、この「sparkline」効果を得るより良い方法はありますか?

57
Sean

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)
89
Sandy Muspratt

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 を参照してください

24
hibernado

Sandyの更新された回答は良いように見えますが、ggplotの更新によって廃止された可能性がありますか?次のコード(Sandyの元の答えの簡略版)からわかることから、余分なスペースなしでSeanの元のグラフを再現します。

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を使用しています。

4

私が知る限りでは、サンディの答えは正しいですが、ファセットのないプロットの幅とファセットが削除されたプロットの幅にわずかな差があるように思われることに言及する価値があると思います。

探しているのでない限り明らかではありませんが、Wickhamが本で推奨しているビューポートレイアウトを使用してプロットを積み重ねると、違いが明らかになります。

4
CW Dillon