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 for
pętli lub coś podobnego. Pamiętaj tylko, aby zmienić wartości xlim
i ylim
na 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 = TRUE
do 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 = TRUE
w 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 ggplot2
rozwiązania, można użyć jednej cowplot
lub patchwork
pakietó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.