Erro em plot.new (): margens da figura muito grandes, gráfico de dispersão

107

Procurei em diferentes questões por uma solução e tentei o que foi sugerido, mas não encontrei uma solução para fazê-lo funcionar.

Sempre que desejo executar este código, ele sempre diz:

Erro em plot.new (): margens da figura muito grandes

e não sei como consertar. Aqui está o meu código:

par(mfcol=c(5,3))
hist(RtBio, main="Histograma de Bio Pappel")
boxplot(RtBio, main="Diagrama de Caja de Bio Pappel")
stem(RtBio)
plot(RtBio, main="Gráfica de Dispersión")

hist(RtAlsea, main="Histograma de Alsea")
boxplot(Alsea, main="Diagrama de caja de Alsea")
stem(RtAlsea)
plot(RtTelev, main="Gráfica de distribución de Alsea")

hist(RtTelev, main="Histograma de Televisa")
boxplot(telev, main="Diagrama de Caja de Televisa")
stem(Telev)
plot(Telev, main="Gráfica de dispersión de Televisa")

hist(RtWalmex, main="Histograma de Walmex")
boxplot(RtWalmex, main="Diagrama de caja de Walmex")
stem(RtWalmex)
plot(RtWalmex, main="Gráfica de dispersión de Walmex")

hist(RtIca, main="Histograma de Ica")
boxplot(RtIca, main="Gráfica de caja de Ica")
stem(RtIca)
plot(RtIca, main="Gráfica de dispersión de Ica")

O que eu posso fazer?

user3530361
fonte
2
As margens parecem muito grandes para a sua imagem. Isso pode acontecer se você tiver uma pequena janela de plotagem. Em qualquer caso, sua descrição é insuficiente para diagnosticar o problema. Poderíamos usar um exemplo reproduzível ou captura de tela de sua sessão R com a janela de plotagem.
Roman Luštrik
No meu caso, ajudou a depurar com um pequeno subconjunto de dados que deveriam ser plotados como plot(df[1,1:3], df2[1,1:3])- e então percebi que o que eu realmente queria fazer é plot(unlist(df[1,1:3]), unlist(df2[1,1:3]))também ver: stackoverflow.com/a/17074060/6018688
fabianegli

Respostas:

161

Sempre que você estiver criando plotagens, poderá obter este erro - " Error in plot.new() : figure margins too large". Para evitar tais erros, você pode primeiro verificar a par("mar")saída. Você deve receber:

[1] 5.1 4.1 4.1 2.1

Para mudar essa escrita:

par(mar=c(1,1,1,1))

Isso deve corrigir o erro. Ou então você pode alterar os valores de acordo.

Espero que funcione para voce.

Convidado R
fonte
2
como você sabe exatamente quais valores estão dentro das margens? E por que você diz que eu deveria estar recebendo [1] 5.1 4.1 4.1 2.1, mas então você me diz para mudar para todos os 1's?
Herman Toothrot
2
Tive o mesmo problema com o RStudio e, quando entrei par("mar"), recuperei a mesma string exata, [1] 5.1 4.1 4.1 2.1por isso entrei, par(mar=c(1,1,1,1))mas plot () não traçava nada, então tive que fechar o RStudio e o terminal. Depois de reabrir o RStudio, ele voltou ao normal.
noobninja
2
Encontrando o mesmo problema na redução de R no RStudio também. No entanto, nem a solução do Guest R nem o reinício do @noobninja corrigiram para mim.
SC.
Você está recebendo este erro devido a um problema de layout da IU do RStudio, e não a algo errado com o código. A segunda resposta consertou para mim.
Nicole Sullivan
1
@Nicole Sullivan Recebi este erro também sem RStudio. Fiz conforme descrito e funciona. Obrigado @djhurio!
Gwang-Jin Kim
105

Isso pode acontecer quando seu painel de plotagem no RStudio é muito pequeno para as margens da plotagem que você está tentando criar. Tente expandi-lo e execute seu código novamente.

A IU do RStudio causa um erro quando o painel de plotagem é muito pequeno para exibir o gráfico: RStudio com painel de plot muito pequeno

A simples expansão do painel de plotagem corrige o bug e exibe o gráfico: RStudio com o painel de plotagem expandido

Csislander
fonte
5
De fato funciona .. simplesmente expandir a área do lote ajuda
Jiapeng Zhang
3
Sim, o redimensionamento dos painéis no RStudio funciona. É um bug do RStudio causado quando você minimiza o lado direito da IU deslizando o painel de plotagem para fechar.
Nicole Sullivan
isso realmente funciona na maioria dos casos. há uma pequena minoria de casos em que as margens são realmente tão pequenas que, mesmo se você maximizar esta janela, não terá solução para o problema
Dimitrios Zacharatos 01 de
27

Invocar dev.off()para fazer o RStudio abrir um novo dispositivo gráfico com configurações padrão funcionou para mim. HTH.

PGreen
fonte
1
Você poderia explicar como fazer isso?
Swift Arrow
20

Se você receber esta mensagem no RStudio, clique na figura 'cabo de vassoura' "Clear All Plots" na guia Plots e tente plot () novamente.

Além disso, execute o comando

graphics.off()
Prakhar Agarwal
fonte
11
escreva estas três linhasgraphics.off() par("mar") par(mar=c(1,1,1,1))
Hiren
6

Limpe os gráficos e tente executar o código novamente ... Funcionou para mim

Shravya Mutyapu
fonte
1

Apenas uma nota lateral. Às vezes, esse erro de "margem" ocorre porque você deseja salvar uma figura de alta resolução (por exemplo, dpi = 300ou res = 300) em R.
Neste caso, o que você precisa fazer é especificar a largura e a altura . (Btw, ggsave() não requer isso.)

Isso causa o erro de margem:

# eg. for tiff()
par(mar=c(1,1,1,1))
tiff(filename =  "qq.tiff",
     res = 300,                                                 # the margin error.
     compression = c( "lzw") )
# qq plot for genome wide association study (just an example)
qqman::qq(df$rawp, main = "Q-Q plot of GWAS p-values", cex = .3)
dev.off()

Isso corrigirá o erro de margem:

# eg. for tiff()
par(mar=c(1,1,1,1))
tiff(filename =  "qq.tiff",
     res = 300,                                                 # the margin error.
     width = 5, height = 4, units = 'in',                       # fixed
     compression = c( "lzw") )
# qq plot for genome wide association study (just an example)
qqman::qq(df$rawp, main = "Q-Q plot of GWAS p-values", cex = .3)
dev.off()
Guannan Shen
fonte