Wie zeichne ich ein leeres Grundstück?


106

Ich muss ein leeres Grundstück machen. Dies ist das Beste, was ich mir vorstellen kann.

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

Einfachere Lösungen?

PS: komplett leer, keine Achse etc.

Antworten:


107

Wie wäre es mit so etwas wie:

plot.new()

@Adam, ich weiß nicht, was du mit "R richtig" meinst.
Joshua Ulrich

@ Joshua, sorry plot.new () funktioniert gut, x11 () ist nicht erforderlich. Ich sagte R richtig, weil ich dachte, x11 () sei Teil Ihrer Lösung, aber es funktioniert ohne.
Adam SO

1
@Adam x11()ist ein plattformübergreifender R-Befehl zum Öffnen eines neuen Geräts. Wenn Sie ein Gerät geöffnet haben und anrufen plot.new(), wird das aktuelle Gerät gelöscht.
Joshua Ulrich

1
Gibt es einen Vorteil x11()gegenüber dev.new()? Mein Instinkt ist es, mit letzterem zu arbeiten, um das lokale Standardgerät aufzunehmen, aber ich bin mir nicht sicher, wie die Dinge so funktionieren.
Matt Parker

@ Matt: Ich benutze x11()aus Gewohnheit. Ich bin kein Experte für das Plotten in R, aber nach einem Blick auf die Dokumentation dev.new()wäre es wahrscheinlich besser.
Joshua Ulrich

63

Ich schlage vor, dass jemand ein leeres Diagramm erstellen muss, um später einige Grafiken hinzuzufügen. Also mit

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

Sie können die Achsengrenzen Ihrer Grafik angeben.


25

Dies ist geringfügig einfacher als Ihre ursprüngliche Lösung:

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

Keine Notwendigkeit hinzuzufügen ann=FALSE, wird sowieso ein leerer Bereich sein. Aber eine tolle Lösung, danke!
MS Berends

22

Im Folgenden wird nichts im Diagramm dargestellt, und es bleibt leer.

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

Dies ist nützlich, wenn Sie anschließend Linien oder Punkte innerhalb einer forSchleife oder ähnlichem hinzufügen möchten . Denken Sie daran, die Werte xlimund ylimbasierend auf den Daten zu ändern, die Sie zeichnen möchten.

Als Randnotiz: Dies kann auch für Boxplot-, Violin- und Schwarmplots verwendet werden. Denken Sie daran, die add = TRUEPlotfunktion zu erweitern und anzugeben at =, auf welcher Zahl Sie sie plotten möchten (Standard ist die x-Achse, sofern Sie horz = TRUEdiese Funktionen nicht festgelegt haben.


17

Adam, nach Ihrem obigen Kommentar ("Ich wollte, dass das leere Diagramm als Füllmaterial in einem Multiplot-Diagramm (mfrow) dient.") Wollen Sie eigentlich die Option mfg

    par(mfg=c(row,column))

- welche steuert, wo Sie das nächste Diagramm platzieren möchten. Um beispielsweise einen Plot in die Mitte eines 3x3-Multiplots zu setzen, tun Sie dies

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

14

Sie benötigen ein neues Plotfenster sowie ein Koordinatensystem. Sie benötigen also plot.new()und plot.window()können dann mit dem Hinzufügen von Diagrammelementen beginnen:

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

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

Beispielplot


4

Es gibt ein Interesse an Ihrer Lösung, das es plot.new()jedoch nicht gibt: In dem leeren Diagramm, das Sie "zeichnen", können Sie Text an bestimmten Koordinaten mit schreiben text(x = ..., y = ..., your_text).


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

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

1
grid()hat nichts mit dem Rasterpaket AFAIK
baptiste

2

Wenn jemand nach einer ggplot2Lösung sucht , können Sie entweder cowplotoder patchworkPakete verwenden

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

Erstellt am 17.03.2019 durch das reprex-Paket (v0.2.1.9000)


1

Ein leerer Plot mit einigen Texten, deren Position festgelegt ist.

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

Warum Text hinzufügen? Was hat das mit "Wie erstelle ich ein leeres Grundstück?" Zu tun. Insgesamt scheint dies komplizierter zu sein als die Methode von OP in der Frage plot(0,xaxt='n',yaxt='n',bty='n',pch='',ylab='',xlab=''), da Sie hinzufügen main = "", sub = "", dass Sie auch ohne sie das gleiche Ergebnis erzielen.
Gregor Thomas
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.