Respostas:
Que tal algo como:
plot.new()
x11()
é um comando R de plataforma cruzada para abrir um novo dispositivo. Se você tiver um dispositivo aberto e ligar plot.new()
, o dispositivo atual será apagado.
x11()
terminar dev.new()
? Meu instinto é escolher o último para acomodar qualquer que seja o dispositivo padrão local, mas não tenho certeza de que é assim que as coisas funcionam.
x11()
devido ao hábito. Não sou especialista em plotagem em R, mas depois de dar uma olhada na documentação, dev.new()
provavelmente seria melhor.
Sugiro que alguém faça um gráfico vazio para adicionar alguns gráficos depois. Então, usando
plot(1, type="n", xlab="", ylab="", xlim=c(0, 10), ylim=c(0, 10))
você pode especificar os limites dos eixos do seu gráfico.
Isso é um pouco mais simples do que sua solução original:
plot(0,type='n',axes=FALSE,ann=FALSE)
ann=FALSE
, de qualquer forma será uma área vazia. Mas uma ótima solução, obrigado!
O seguinte não representa nada no gráfico e permanecerá vazio.
plot(NULL, xlim=c(0,1), ylim=c(0,1), ylab="y label", xlab="x lablel")
Isso é útil quando você deseja adicionar linhas ou pontos posteriormente em um for
loop ou algo semelhante. Apenas lembre-se de alterar os valores xlim
e com ylim
base nos dados que deseja plotar.
Como observação lateral:
também pode ser usado para Boxplot, plotagens de violino e plotagens de enxame. para aqueles, lembre-se de adicionar add = TRUE
à sua função de plotagem e também especificar at =
para especificar em qual número você deseja plotá-los (o padrão é o eixo x, a menos que você tenha definido horz = TRUE
essas funções.
Adam, seguindo seu comentário acima ("Eu queria que o gráfico vazio servisse como preenchimento em um gráfico multiplot (mfrow)."), O que você realmente quer é a opção mfg
par(mfg=c(row,column))
- que controla onde você deseja colocar o próximo gráfico. Por exemplo, para colocar um gráfico no meio de um multiplot 3x3, faça
par(mfrow=c(3,3))
par(mfg=c(2,2))
plot(rnorm(10))
Você precisa de uma nova janela de plotagem e também de um sistema de coordenadas, então você precisa plot.new()
e plot.window()
, então, pode começar a adicionar 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()
não está relacionado ao pacote de grade AFAIK
Se alguém estiver procurando por uma ggplot2
solução, você pode usar os pacotes cowplot
oupatchwork
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 = ")"
)
Criado em 17/03/2019 pelo pacote reprex (v0.2.1.9000)
Uma trama vazia com alguns textos que são posicionados.
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='')
, já que você adiciona main = "", sub = ""
mesmo obtém o mesmo resultado sem eles.