@Adam, não sei o que quer dizer com "R propriamente dito".
Joshua Ulrich
@Joshua, desculpe plot.new () funciona bem, não há necessidade de x11 (). Eu disse R adequado porque pensei que x11 () fazia parte da sua solução, mas funciona sem ele.
Adam SO
1
@Adam 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.
Joshua Ulrich
1
Existe uma vantagem em 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.
Matt Parker
@Matt: Eu uso 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.
Joshua Ulrich
63
Sugiro que alguém faça um gráfico vazio para adicionar alguns gráficos depois. Então, usando
Isso é útil quando você deseja adicionar linhas ou pontos posteriormente em um forloop ou algo semelhante. Apenas lembre-se de alterar os valores xlime com ylimbase 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 = TRUEessas 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
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:
Há um interesse em sua solução que plot.new()não mudou: no gráfico vazio que você "desenhou", você pode escrever texto em coordenadas especificadas com text(x = ..., y = ..., your_text).
Por que adicionar texto? O que isso tem a ver com "Como criar uma trama vazia?". No geral, isso parece mais complicado do que o método do OP na questão 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.
x11()
é um comando R de plataforma cruzada para abrir um novo dispositivo. Se você tiver um dispositivo aberto e ligarplot.new()
, o dispositivo atual será apagado.x11()
terminardev.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
você pode especificar os limites dos eixos do seu gráfico.
fonte
Isso é um pouco mais simples do que sua solução original:
fonte
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.
Isso é útil quando você deseja adicionar linhas ou pontos posteriormente em um
for
loop ou algo semelhante. Apenas lembre-se de alterar os valoresxlim
e comylim
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 especificarat =
para especificar em qual número você deseja plotá-los (o padrão é o eixo x, a menos que você tenha definidohorz = TRUE
essas funções.fonte
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
- 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
fonte
Você precisa de uma nova janela de plotagem e também de um sistema de coordenadas, então você precisa
plot.new()
eplot.window()
, então, pode começar a adicionar elementos de gráfico:enredo de exemplo
fonte
Há um interesse em sua solução que
plot.new()
não mudou: no gráfico vazio que você "desenhou", você pode escrever texto em coordenadas especificadas comtext(x = ..., y = ..., your_text)
.fonte
fonte
grid()
não está relacionado ao pacote de grade AFAIKSe alguém estiver procurando por uma
ggplot2
solução, você pode usar os pacotescowplot
oupatchwork
Criado em 17/03/2019 pelo pacote reprex (v0.2.1.9000)
fonte
Uma trama vazia com alguns textos que são posicionados.
fonte
plot(0,xaxt='n',yaxt='n',bty='n',pch='',ylab='',xlab='')
, já que você adicionamain = "", sub = ""
mesmo obtém o mesmo resultado sem eles.