Boş bir arsa nasıl çizilir?


106

Boş bir komplo yapmam gerekiyor. Bulabildiğim en iyisi bu.

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

Daha basit çözümler var mı?

Not: tamamen boş, eksen yok vs.

Yanıtlar:


107

Şunun gibi bir şeye ne dersiniz:

plot.new()

@Adam, "R uygun" ile ne demek istediğini bilmiyorum.
Joshua Ulrich

@Joshua, üzgünüm plot.new () iyi çalışıyor, x11 () 'e gerek yok. R doğru dedim çünkü x11 () 'in çözümünüzün bir parçası olduğunu düşündüm, ama onsuz çalışıyor.
Adam SO

1
@Adam x11(), yeni bir cihaz açmak için çapraz platform R komutudur. Açık bir cihazınız varsa ve arama yaparsanız plot.new(), mevcut cihaz silinecektir.
Joshua Ulrich

1
Bir avantaj var mı x11()üzerinde dev.new()? İçgüdülerim, yerel varsayılan aygıt ne olursa olsun, ikincisi ile gitmek, ancak işlerin nasıl çalıştığından emin değilim.
Matt Parker

@Matt: x11()Alışkanlık nedeniyle kullanıyorum . R'de çizim konusunda uzman değilim, ancak belgelere baktıktan sonra dev.new()muhtemelen daha iyi olur.
Joshua Ulrich

63

Daha sonra üzerine grafik eklemek için birisinin boş arsa yapması gerektiğini öneririm. Yani, kullanarak

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

grafiğinizin eksen sınırlarını belirleyebilirsiniz.


25

Bu, orijinal çözümünüzden marjinal olarak daha basittir:

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

Eklemeye gerek yok ann=FALSE, zaten boş bir alan olacak. Ama harika bir çözüm, teşekkürler!
MS Berends

22

Aşağıdakiler arsadaki hiçbir şeyi çizmez ve boş kalacaktır.

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

Bu, daha sonra bir fordöngü veya benzeri bir şey içinde çizgiler veya noktalar eklemek istediğinizde kullanışlıdır . Grafiğini çizmek istediğiniz verilere göre xlimve ylimdeğerlerini değiştirmeyi unutmayın .

Bir yan not olarak: Bu, Kutu grafiği, Keman grafikleri ve sürü grafikleri için de kullanılabilir. add = TRUEonlar için çizim işlevlerine eklemeyi unutmayın ve at =bunları hangi sayıya çizmek istediğinizi de belirtin ( horz = TRUEbu işlevlerde ayarlamadıysanız varsayılan x eksenidir .


17

Adam, yukarıdaki yorumunuzu takiben ("Boş arsanın çok alanlı (mfrow) bir arsa içinde dolgu işlevi görmesini istedim."), Aslında istediğiniz şey mfg seçeneği

    par(mfg=c(row,column))

- sonraki arsayı nereye koymak istediğinizi kontrol eder. Örneğin, 3x3 çoklu slotun ortasına bir grafik koymak için,

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

14

Yeni bir çizim penceresine ve ayrıca bir koordinat sistemine ihtiyacınız var, bu nedenle ihtiyacınız var plot.new()ve plot.window()ardından grafik öğeleri eklemeye başlayabilirsiniz:

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

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

örnek olay örgüsü


4

Çözümünüze yine de ilgi duyulmayan bir ilgi plot.new()var: "çizdiğiniz" boş arsa ile belirtilen koordinatlarda metin yazabilirsiniz text(x = ..., y = ..., your_text).



2

ggplot2Çözüm arayan biri varsa , ya cowplotda patchworkpaketleri kullanabilirsiniz

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 paketi (v0.2.1.9000) tarafından 2019-03-17 tarihinde oluşturuldu


1

Pozisyonu belirlenmiş bazı metinleri içeren boş bir arsa.

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

Neden metin eklemelisiniz? Bunun "Boş bir arsa nasıl oluşturulur?" İle ne alakası var? Genel olarak, bu, OP'nin söz konusu yönteminden daha karmaşık görünüyor plot(0,xaxt='n',yaxt='n',bty='n',pch='',ylab='',xlab=''), çünkü eklerseniz main = "", sub = ""bile aynı sonucu onlarsız alırsınız.
Gregor Thomas
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.