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

В R я встретил бегущую ошибку следующим образом:

> png("p3_sa_para.png", 4, 2)
> par(mfrow=c(1,2))
> plot(c(1:10), ylab="Beta",xlab="Iteration")
Error in plot.new() : figure margins too large
> plot(c(1:10), ylab="Gamma",xlab="Iteration")
Error in plot.new() : figure margins too large
> dev.off()
X11cairo 
       2 

Я уже сделал размер изображения маленьким, чтобы быть 4 на 2, почему он все еще жалуется на "слишком большие поля фигуры"? Как я могу решить эту проблему с помощью png?

Странно, что если я изменю png на pdf, это сработает. Я также задаюсь вопросом, почему?

Спасибо и приветствую!

Ответы

Ответ 1

Функция png() использует пиксели не дюймы, поэтому попробуйте что-то вроде

png("p3_sa_para.png", 640, 480)

И чтобы ответить на ваш второй вопрос, да, pdf() использует дюймы, потому что в векторно-графическом формате нет понятия пикселей. Функции help(png) и help(pdf) - ваши друзья.

Ответ 2

Проблема может возникнуть из-за использования определенной среды IDE. Я использовал Rstudio, и у меня появилось множество ошибок. Мой точный код отлично работал на консоли.

Ответ 3

Даже я получал сообщение об ошибке в R-Studio, в то время как сюжет отображался на консоли. Простой перезапуск RStudio решил проблему! Сказав это, страница поддержки RStudio предполагает, что сброс графического устройства dev.off() может помочь. http://support.rstudio.org/help/kb/troubleshooting/problem-with-plots-or-graphics-device

Ответ 4

Это обычная проблема для печати специально, когда вы используете IDE, где есть место для генерации и отображения сюжета, считалось, что это общая проблема, и есть логика: когда вы говорите R, чтобы что-то нарисовать, R сначала просмотрите данные, а затем просмотрите область, в которой он находится, чтобы сделать это.

Команды png() и аналогичные команды:

В вашем случае вы дали сюжет площади размером 4 на 2 пикселя для его построения, поэтому вы можете решить его, увеличив площадь в размере, который может соответствовать вашему сюжету. (как упоминается Dirk Eddelbuettel )

В случае IDE

В большинстве случаев это намного проще, просто увеличьте область построения, перетащив поля, а затем снова запустите свой код (закройте любой параметр par(), если вы открыли ранее и создали новый) enter image description here