Ошибка в plot.new (): слишком большие поля рисунка, точечная диаграмма

109

Я искал решение по разным вопросам и пробовал то, что было предложено, но не нашел решения, чтобы заставить его работать.

Каждый раз, когда я хочу запустить этот код, он всегда говорит:

Ошибка в plot.new (): слишком большие поля рисунка

и я не знаю, как это исправить. Вот мой код:

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")

Что я могу сделать?

user3530361
источник
2
Поля слишком велики для вашего изображения. Это может произойти, если у вас небольшое окно графика. В любом случае вашего описания недостаточно для диагностики проблемы. Мы могли бы использовать воспроизводимый пример или снимок экрана вашего сеанса R с окном графика.
Роман Луштрик
В моем случае это помогло отладить небольшое подмножество данных, которые должны были быть построены, как plot(df[1,1:3], df2[1,1:3])- и затем я понял, что на самом деле я хотел plot(unlist(df[1,1:3]), unlist(df2[1,1:3]))также увидеть: stackoverflow.com/a/17074060/6018688
fabianegli

Ответы:

164

Каждый раз, когда вы создаете графики, вы можете получить эту ошибку - " Error in plot.new() : figure margins too large". Чтобы избежать таких ошибок, вы можете сначала проверить par("mar")вывод. Вы должны получить:

[1] 5.1 4.1 4.1 2.1

Чтобы изменить это, напишите:

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

Это должно исправить ошибку. Или вы можете изменить значения соответствующим образом.

Надеюсь, что это работает для вас.

Гость R
источник
2
как точно узнать, какие значения находятся внутри полей? И почему вы говорите, что я должен получить [1] 5.1 4.1 4.1 2.1, но затем вы говорите мне изменить его на все единицы?
Herman Toothrot
3
Я столкнулся с той же проблемой с RStudio, и когда я вошел, par("mar")я получил ту же самую строку, [1] 5.1 4.1 4.1 2.1поэтому я вошел, par(mar=c(1,1,1,1))но тогда plot () ничего не отобразил, поэтому мне пришлось закрыть и RStudio, и терминал. После повторного открытия RStudio все вернулось к норме.
noobninja
2
Возникла та же проблема в R markdown и в RStudio. Однако ни решение Guest R, ни перезапуск @noobninja не исправили это для меня.
SC.
Вы получаете эту ошибку из-за проблемы с макетом пользовательского интерфейса RStudio, а не из-за проблем с кодом. Второй ответ исправил это для меня.
Николь Салливан,
1
@Nicole Sullivan Я получил эту ошибку и без RStudio. Я сделал, как описано, и все работает. Спасибо @djhurio!
Gwang-Jin Kim
106

Это может произойти, если ваша панель графика в RStudio слишком мала для полей графика, который вы пытаетесь создать. Попробуйте развернуть его, а затем снова запустите свой код.

RStudio UI вызывает ошибку, когда панель графика слишком мала для отображения диаграммы: RStudio с слишком маленькой панелью сюжета

Простое развертывание панели графика исправляет ошибку и отображает диаграмму: RStudio с расширенной панелью графика

Csislander
источник
5
Это действительно работает ... помогает простое расширение области сюжета
Jiapeng Zhang
3
Да, изменение размера панелей в RStudio работает. Это ошибка RStudio, возникающая, когда вы сворачиваете правую часть пользовательского интерфейса, закрывая панель графика.
Николь Салливан
это действительно работает в большинстве случаев. есть небольшое количество случаев, когда поля действительно настолько малы, что даже если вы увеличите это окно до максимума, у вас не будет решения этой проблемы,
Димитриос Захаратос
27

Вызов, dev.off()чтобы заставить RStudio открыть новое графическое устройство с настройками по умолчанию, сработал для меня. HTH.

PGreen
источник
1
Не могли бы вы объяснить, как это сделать?
Swift Arrow,
20

Если вы получили это сообщение в RStudio, щелкните фигуру «метла» «Очистить все графики» на вкладке «Графики» и снова попробуйте plot ().

Кроме того, выполните команду

graphics.off()
Пракхар Агарвал
источник
11
напишите эти три строчкиgraphics.off() par("mar") par(mar=c(1,1,1,1))
Hiren
6

Просто очистите графики и попробуйте снова выполнить код ... У меня это сработало

Шравья Мутяпу
источник
1

Просто примечание. Иногда эта «ошибка поля» возникает из-за того, что вы хотите сохранить фигуру с высоким разрешением (например, dpi = 300или res = 300) в R.
В этом случае вам нужно указать ширину и высоту . (Кстати, ggsave() этого не требует.)

Это вызывает погрешность запаса:

# 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()

Это исправит маржинальную ошибку:

# 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()
Гуаннань Шэнь
источник