軸、凡例などのないggplot2プロット


139

(私ができる)バイオコンダクターのhexbinを使用して、(png)表示領域全体を埋めるプロットを生成します-軸なし、ラベルなし、背景なし、ヌチンなし。


1
hexbinプロットを作成して画像エディターでトリミングする方が簡単ではないでしょうか?
joran

3
試してみるtheme_void()
ブライアンD

回答:


182

チェイスの回答の私のコメントによると、次のものを使用してこのようなものの多くを削除できますelement_blank

dat <- data.frame(x=runif(10),y=runif(10))

p <- ggplot(dat, aes(x=x, y=y)) + 
        geom_point() +
        scale_x_continuous(expand=c(0,0)) + 
        scale_y_continuous(expand=c(0,0))   

p + theme(axis.line=element_blank(),axis.text.x=element_blank(),
          axis.text.y=element_blank(),axis.ticks=element_blank(),
          axis.title.x=element_blank(),
          axis.title.y=element_blank(),legend.position="none",
          panel.background=element_blank(),panel.border=element_blank(),panel.grid.major=element_blank(),
          panel.grid.minor=element_blank(),plot.background=element_blank())

これを保存すると、結果の.pngの端の周りにまだ小さなマージンがあるようです。おそらく他の誰かがそのコンポーネントでさえ削除する方法を知っています。

(過去のメモ:ggplot2バージョン0.9.2 以降、opts非推奨になりました。代わりにを使用theme()して置き換えtheme_blank()てくださいelement_blank()。)



パッシングでのコメント:いくつかのケースでは、theme(axis.ticks=element_blank())のようにうまく動作しませんtheme(axis.ticks.x=element_blank())、おそらく一時的なバグのどこか(私はその後、私が上書きしようとすると、私自身のテーマを設定している:のみaxis.ticks.xaxis.ticks.y仕事をする。)
PatrickT

106

Re:optsをテーマなどに変更する(怠惰な人向け):

theme(axis.line=element_blank(),
      axis.text.x=element_blank(),
      axis.text.y=element_blank(),
      axis.ticks=element_blank(),
      axis.title.x=element_blank(),
      axis.title.y=element_blank(),
      legend.position="none",
      panel.background=element_blank(),
      panel.border=element_blank(),
      panel.grid.major=element_blank(),
      panel.grid.minor=element_blank(),
      plot.background=element_blank())

59

現在の回答は不完全または非効率的です。これは(おそらく)結果を達成するための最短の方法です(使用theme_void()

data(diamonds) # Data example
ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) +
      theme_void() + theme(legend.position="none")

結果は次のとおりです。

ここに画像の説明を入力してください


あなただけの排除に興味がある場合は、ラベルをlabs(x="", y="")トリックを行います。

ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + 
      labs(x="", y="")

ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + theme_void() + theme(legend.position="none", panel.background = element_rect(fill="grey80"), plot.background = element_rect(fill="red"))100%無効ではないことを示唆しています
baptiste 2016

labs(x = ""、y = "")は、軸のみを削除しているように見えません。ラベルだけです。
Miratrix 2017

@miratrixごめんなさい、私の間違い。更新しました。
luchonacho 2017

5
@luchonachoの使用 labs(x="",y="")実際にはタイトルがあるため、軸のタイトルのスペース残してます。軸のタイトルとそれらのスペースを削除するには、使用することを+ theme(axis.title = element_blank())
お勧め

6
labs(x = NULL)またはxlab(NULL)他の方法です。
PatrickT

42
'opts' is deprecated.

ggplot2 >= 0.9.2使用

p + theme(legend.position = "none") 

6
まだ編集権限がないことは承知していますが、更新が必要な他のggplot2回答を見つけた場合は、re:opts()で編集を提案してください。通知が届き、自分で組み込むことができます。
joran

3
xy <- data.frame(x=1:10, y=10:1)
plot <- ggplot(data = xy)+geom_point(aes(x = x, y = y))
plot
panel = grid.get("panel-3-3")

grid.newpage()
pushViewport(viewport(w=1, h=1, name="layout"))
pushViewport(viewport(w=1, h=1, name="panel-3-3"))
upViewport(1)
upViewport(1)
grid.draw(panel)

Error in UseMethod("grid.draw") : no applicable method for 'grid.draw' applied to an object of class "NULL"
RomanLuštrik

grid.ls()は、ビューポートとグロブオブジェクトのリストを表示します
amaurel '15年

パネル名を使用しているggplotの他のバージョンでは異なるようです
amaurel

xy <-data.frame(x = 1:10、y = 10:1)plot <-ggplot(data = xy)+ geom_point(aes(x = x、y = y))plot panel = grid.get( " panel-3-4 ")grid.newpage()pushViewport(viewport(w = 1、h = 1、name =" layout "))pushViewport(viewport(w = 1、h = 1、name =" panel-3- 4 "))upViewport(1)upViewport(1)grid.draw(panel)
amaurel '15年

-1

これはあなたが望むことをしますか?

 p <- ggplot(myData, aes(foo, bar)) + geom_whateverGeomYouWant(more = options) +
 p + scale_x_continuous(expand=c(0,0)) + 
 scale_y_continuous(expand=c(0,0)) +
 opts(legend.position = "none")

凡例を取り除きますが、x軸とy軸、および背景グリッドはまだ残っています。
user1320487 2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.