Odpowiedzi:
A może coś takiego:
plot.new()
x11()to wieloplatformowe polecenie R do otwierania nowego urządzenia. Jeśli masz otwarte urządzenie i zadzwonisz plot.new(), bieżące urządzenie zostanie wyczyszczone.
x11()pokonania dev.new()? Instynkt podpowiada mi, aby wybrać to drugie, aby dostosować się do dowolnego domyślnego urządzenia lokalnego, ale nie jestem pewien, jak to działa.
x11()z przyzwyczajenia. Nie jestem ekspertem od kreślenia w R ale po przejrzeniu dokumentacji dev.new()pewnie byłoby lepiej.
Sugeruję, aby ktoś zrobił pustą fabułę, aby później dodać na niej trochę grafiki. Więc używając
plot(1, type="n", xlab="", ylab="", xlim=c(0, 10), ylim=c(0, 10))
możesz określić granice osi twojej grafiki.
Jest to nieznacznie prostsze niż oryginalne rozwiązanie:
plot(0,type='n',axes=FALSE,ann=FALSE)
ann=FALSE, i tak będzie pusty obszar. Ale świetne rozwiązanie, dzięki!
Poniższy tekst nie wykreśla nic na wykresie i pozostanie pusty.
plot(NULL, xlim=c(0,1), ylim=c(0,1), ylab="y label", xlab="x lablel")
Jest to przydatne, gdy chcesz później dodać linie lub kropki w forpętli lub coś podobnego. Pamiętaj tylko, aby zmienić wartości xlimi ylimna podstawie danych, które chcesz wykreślić.
Na marginesie:
można to również wykorzystać do wykresów pudełkowych, skrzypcowych i rojów. dla tych pamiętaj, aby dodać add = TRUEdo ich funkcji kreślenia, a także określić, at =na którym numerze chcesz je wykreślić (domyślnie jest to oś x, chyba że ustawiłeś horz = TRUEw tych funkcjach.
Adam, podążając za twoim komentarzem powyżej („Chciałem, aby pusta działka służyła jako wypełniacz na wykresie typu multiplot (mfrow)”), tak naprawdę chcesz, aby opcja mfg
par(mfg=c(row,column))
- który kontroluje, gdzie chcesz umieścić następny dział. Na przykład, aby umieścić działkę w środku multiplotu 3x3, zrób
par(mfrow=c(3,3))
par(mfg=c(2,2))
plot(rnorm(10))
Potrzebujesz nowego okna wykresu, a także układ współrzędnych, więc trzeba plot.new()i plot.window(), po czym można rozpocząć dodawanie elementów wykresu:
plot.new( )
plot.window( xlim=c(-5,5), ylim=c(-5,5) )
points( rnorm(100), rnorm(100) )
axis( side=1 )
grid.newpage() ## If you're using ggplot
grid() ## If you just want to activate the device.
grid()jest niezwiązany z pakietem sieci AFAIK
Jeśli ktoś szuka ggplot2rozwiązania, można użyć jednej cowplotlub patchworkpakietów
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 = ")"
)

Utworzono 17.03.2019 przez pakiet reprex (v0.2.1.9000)
Pusta działka z kilkoma tekstami, które mają ustawione pozycje.
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")
plot(0,xaxt='n',yaxt='n',bty='n',pch='',ylab='',xlab=''), ponieważ dodajesz main = "", sub = "", że bez nich uzyskasz ten sam wynik.