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.