空のプロットを描くには?


106

空のプロットを作成する必要があります。これは私が思いつくことができる最高のものです。

plot(0, xaxt = 'n', yaxt = 'n', bty = 'n', pch = '', ylab = '', xlab = '')

より簡単な解決策はありますか?

PS:完全に空、軸なしなど

回答:


107

次のようなものはどうですか:

plot.new()

@アダム、「Rプロパー」の意味がわからない。
ジョシュアウルリッヒ

@ジョシュア、申し訳ありませんplot.new()は正常に動作します。x11()は必要ありません。x11()はあなたのソリューションの一部だと思ったので、Rは適切だと言いましたが、それがなくても機能します。
Adam SO

1
@Adam x11()は、新しいデバイスを開くためのクロスプラットフォームのRコマンドです。デバイスを開いてを呼び出すplot.new()と、現在のデバイスがクリアされます。
ジョシュアウルリッヒ

1
x11()以上に利点はありdev.new()ますか?私の直感は、ローカルのデフォルトデバイスが何であれ、後者に対応することですが、それがどのように機能するかはわかりません。
Matt Parker、

@マット:x11()癖があるので使っています。私はRでのプロットの専門家ではありませんが、ドキュメントを一見すると、dev.new()おそらくもっと良いでしょう。
ジョシュアウルリッヒ

63

後でグラフィックを追加するために、誰かが空のプロットを作成する必要があることをお勧めします。したがって、

plot(1, type="n", xlab="", ylab="", xlim=c(0, 10), ylim=c(0, 10))

グラフィックの軸の範囲を指定できます。


25

これは、元のソリューションよりもわずかに簡単です。

plot(0,type='n',axes=FALSE,ann=FALSE)

追加する必要はありませんann=FALSE。とにかく空の領域になります。しかし、素晴らしい解決策、ありがとう!
MS Berends

22

以下はプロットに何もプロットせず、空のままになります。

plot(NULL, xlim=c(0,1), ylim=c(0,1), ylab="y label", xlab="x lablel")

これは、後でforループまたは類似のものの中に線やドットを追加する場合に便利です。プロットするデータに基づいてxlimとのylim値を変更することを忘れないでください。

注意点として: これはまた、ボックスプロット、バイオリンプロットと群れプロットのために使用することができます。add = TRUEそれらのプロット関数に追加することを忘れat =ないでくださいhorz = TRUE。また、プロットする数値を指定するように指定します(これらの関数で設定していない限り、デフォルトはx軸です)。


17

アダム、上のコメント(「空のプロットをマルチプロット(mfrow)プロットのフィラーとして機能させたいと思っていました。」)に従い、実際に必要なのはmfgオプションです。

    par(mfg=c(row,column))

-次のプロットを配置する場所を制御します。たとえば、3x3マルチプロットの中央にプロットを配置するには、次のようにします。

    par(mfrow=c(3,3))
    par(mfg=c(2,2))
    plot(rnorm(10))

14

新しいプロットウィンドウと座標系も必要なのでplot.new()、とが必要ですplot.window()。その後、グラフ要素の追加を開始できます。

plot.new( )
plot.window( xlim=c(-5,5), ylim=c(-5,5) )

points( rnorm(100), rnorm(100) )
axis( side=1 )

プロット例


4

plot.new()しかし、そうではないソリューションに関心があります。空のプロットで「描画」すると、で指定した座標にテキストを書き込むことができますtext(x = ..., y = ..., your_text)



2

誰かがggplot2解決策を探している場合は、cowplotまたはpatchworkパッケージを使用できます

library(ggplot2)

### examples from cowplot vignettes
plot.mpg <- ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl))) +
  geom_point(size = 2.5)
plot.diamonds <- ggplot(diamonds, aes(clarity, fill = cut)) + 
  geom_bar() +
  theme(axis.text.x = element_text(angle = 0, vjust = 0.5))

library(cowplot)
### use NULL
plot_grid(plot.mpg, NULL, NULL, plot.diamonds,
  labels = c("A", "B", "C", "D"),
  ncol = 2
)

# Note: if you want to initialize an empty drawing canvas, use ggdraw() 

library(patchwork)
### use plot_spacer()
plot.mpg + plot_spacer() + plot_spacer() + plot.diamonds +
  plot_layout(ncol = 2) +
  plot_annotation(
    title = "Plot title",
    subtitle = "Plot subtitle",
    tag_levels = "A",
    tag_suffix = ")"
  )

reprexパッケージ(v0.2.1.9000)によって2019-03-17に作成されました


1

位置が設定されたいくつかのテキストを含む空のプロット。

plot(1:10, 1:10,xaxt="n",yaxt="n",bty="n",pch="",ylab="",xlab="", main="", sub="")
mtext("eee", side = 3, line = -0.3, adj = 0.5)
text(5, 10.4, "ddd")
text(5, 7, "ccc")

なぜテキストを追加するのですか?「空のプロットを作成する方法」とはどういう関係ですか。全体として、これは問題のOPの方法よりも複雑に見えplot(0,xaxt='n',yaxt='n',bty='n',pch='',ylab='',xlab='')ます。なぜなら、追加しmain = "", sub = ""なくても同じ結果が得られるからです。
グレゴールトーマス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.