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.

Jawaban:


107

Bagaimana dengan sesuatu seperti:

plot.new()

@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.


25

Ini sedikit lebih sederhana dari solusi asli Anda:

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

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.


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

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


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


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

grid() ## If you just want to activate the device.

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)


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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.