Respuestas:
¿Qué tal algo como:
plot.new()
x11()
es un comando R multiplataforma para abrir un nuevo dispositivo. Si tiene un dispositivo abierto y llama plot.new()
, se borrará el dispositivo actual.
x11()
terminar dev.new()
? Mi instinto es optar por este último para adaptarse al dispositivo predeterminado local, pero no estoy seguro de que así sea como funcionan las cosas.
x11()
por costumbre. No soy un experto en trazar en R, pero después de echar un vistazo a la documentación, dev.new()
probablemente sería mejor.
Sugiero que alguien necesite hacer un diagrama vacío para poder agregarle algunos gráficos más adelante. Entonces, usando
plot(1, type="n", xlab="", ylab="", xlim=c(0, 10), ylim=c(0, 10))
puede especificar los límites de los ejes de su gráfico.
Esto es un poco más simple que su solución original:
plot(0,type='n',axes=FALSE,ann=FALSE)
ann=FALSE
, de todos modos será un área vacía. Pero una gran solución, ¡gracias!
Lo siguiente no traza nada en la trama y permanecerá vacío.
plot(NULL, xlim=c(0,1), ylim=c(0,1), ylab="y label", xlab="x lablel")
Esto es útil cuando desea agregar líneas o puntos posteriormente dentro de un for
bucle o algo similar. Solo recuerde cambiar los valores xlim
y ylim
según los datos que desea graficar.
Como nota al margen:
esto también se puede utilizar para diagramas de caja, violín y enjambre. para aquellos, recuerde agregar add = TRUE
a su función de trazado y también especificar at =
para especificar en qué número desea trazarlos (el valor predeterminado es el eje x a menos que haya establecido horz = TRUE
estas funciones.
Adam, siguiendo su comentario anterior ("Quería que la trama vacía sirviera como relleno en una trama multiplot (mfrow)"), lo que realmente quiere es la opción mfg
par(mfg=c(row,column))
- que controla dónde desea colocar la siguiente parcela. Por ejemplo, para poner una parcela en medio de una parcela de 3x3, haz
par(mfrow=c(3,3))
par(mfg=c(2,2))
plot(rnorm(10))
Necesita una nueva ventana de trazado y también un sistema de coordenadas, por lo que necesita plot.new()
y plot.window()
, luego, puede comenzar a agregar elementos de gráfico:
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()
no está relacionado con el paquete grid AFAIK
Si alguien está buscando una ggplot2
solución, puede usar los paquetes cowplot
opatchwork
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 = ")"
)
Creado el 17-03-2019 por el paquete reprex (v0.2.1.9000)
Una trama vacía con algunos textos que se establecen en posición.
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='')
, ya que agrega main = "", sub = ""
incluso obtiene el mismo resultado sin ellos.