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.