Bagaimana cara menggambar plot kosong?

106

Saya perlu membuat plot kosong. Ini adalah yang terbaik yang bisa saya pikirkan.

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

Ada solusi yang lebih sederhana?

PS: benar-benar kosong, tidak ada sumbu dll.

Adam SO
sumber

Jawaban:

107

Bagaimana dengan sesuatu seperti:

plot.new()
Joshua Ulrich
sumber
@Adam, saya tidak tahu apa yang Anda maksud dengan "R proper".
Joshua Ulrich
@Joshua, maaf plot.new () berfungsi dengan baik, tidak perlu x11 (). saya mengatakan R tepat karena saya pikir x11 () adalah bagian dari solusi Anda, tetapi berfungsi tanpa itu.
Adam SO
1
@Adam x11()adalah perintah R lintas platform untuk membuka perangkat baru. Jika Anda memiliki perangkat yang terbuka dan menelepon plot.new(), perangkat saat ini akan dihapus.
Joshua Ulrich
1
Apakah ada keuntungan x11()dari over dev.new()? Naluri saya adalah menggunakan yang terakhir untuk mengakomodasi apa pun perangkat default lokal, tetapi saya tidak yakin itu cara kerjanya.
Matt Parker
@Matt: Saya menggunakan x11()karena kebiasaan. Saya bukan ahli dalam merencanakan di R tetapi setelah melihat dokumentasinya, dev.new()mungkin akan lebih baik.
Joshua Ulrich
63

Saya menyarankan agar seseorang perlu membuat plot kosong untuk menambahkan beberapa grafik nanti. Jadi, menggunakan

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

Anda dapat menentukan batas sumbu grafik Anda.

stukselbax.dll
sumber
25

Ini sedikit lebih sederhana dari solusi asli Anda:

plot(0,type='n',axes=FALSE,ann=FALSE)
Ben Bolker
sumber
Tak perlu ditambah ann=FALSE, toh bakal jadi lahan kosong. Tapi solusi yang bagus, terima kasih!
MS Berends
22

Kalimat berikut tidak memplot apa pun di dalam plot dan akan tetap kosong.

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

Ini berguna ketika Anda ingin menambahkan garis atau titik setelahnya dalam satu forlingkaran atau yang serupa. Ingatlah untuk mengubah nilai xlimdan ylimberdasarkan data yang ingin Anda plot.

Sebagai catatan tambahan: Ini juga dapat digunakan untuk plot Kotak, plot Biola dan plot kawanan. bagi mereka yang ingat untuk menambahkan add = TRUEfungsi plotting mereka dan juga menentukan at =untuk menentukan nomor mana yang ingin Anda plot (defaultnya adalah sumbu x kecuali Anda telah mengatur horz = TRUEdalam fungsi ini.

Mehrad Mahmoudian
sumber
17

Adam, mengikuti komentar Anda di atas ("Saya ingin plot kosong berfungsi sebagai pengisi dalam plot multiplot (mfrow)."), Yang sebenarnya Anda inginkan adalah opsi mfg

    par(mfg=c(row,column))

- yang mengontrol tempat Anda ingin meletakkan plot berikutnya. Misalnya, untuk meletakkan plot di tengah-tengah perkalian 3x3, lakukan

    par(mfrow=c(3,3))
    par(mfg=c(2,2))
    plot(rnorm(10))
Dag Hjermann
sumber
14

Anda memerlukan jendela plot baru, dan juga sistem koordinat, jadi Anda perlu plot.new()dan plot.window(), kemudian Anda dapat mulai menambahkan elemen grafik:

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

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

contoh plot

why.knot
sumber
4

Ada minat dalam solusi Anda yang plot.new()belum demikian: di plot kosong yang Anda "gambar", Anda dapat menulis teks pada koordinat tertentu text(x = ..., y = ..., your_text).

Dotoma
sumber
3
grid.newpage() ## If you're using ggplot

grid() ## If you just want to activate the device.
Brandon Bertelsen
sumber
1
grid()tidak terkait dengan paket grid AFAIK
baptiste
2

Jika ada yang mencari ggplot2solusi, Anda dapat menggunakan salah satu cowplotatau patchworkpaket

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 = ")"
  )

Dibuat pada 2019-03-17 oleh paket reprex (v0.2.1.9000)

Tung
sumber
1

Plot kosong dengan beberapa teks yang diatur posisinya.

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")
Nick Dong
sumber
Mengapa menambahkan teks? Apa hubungannya itu dengan "Bagaimana membuat plot kosong?". Secara keseluruhan, ini tampaknya lebih rumit daripada metode OP dalam pertanyaan plot(0,xaxt='n',yaxt='n',bty='n',pch='',ylab='',xlab=''), karena Anda menambahkan main = "", sub = ""bahkan Anda mendapatkan hasil yang sama tanpa mereka.
Gregor Thomas