Я строю простую линейную регрессию, используя R. Я хотел бы сохранить это изображение в формате PNG или JPEG, возможно ли сделать это автоматически? (через код)
Есть два разных вопроса: во-первых, я уже смотрю на график на своем мониторе и хотел бы сохранить его как есть. Во-вторых, я еще не сгенерировал график, но я хотел бы сохранить его непосредственно на диск, когда я выполню свой код построения.
Ответы:
Есть два тесно связанных вопроса, и ответ на каждый.
1. Изображение будет сгенерировано в будущем в моем скрипте, как мне сохранить его на диск?
Чтобы сохранить сюжет, вам нужно сделать следующее:
png()
,bmp()
,pdf()
или аналогичныеdev.off()
Пример кода для сохранения графика в
png
файл:Это описано в (комбинированной) справочной странице для графических форматов
?png
,?bmp
,?jpeg
и?tiff
так же , как и в отдельной странице справки для?pdf
.Тем не менее, обратите внимание, что изображение на диске может выглядеть иначе, чем на том же графике, непосредственно отображаемом на экране, например, если вы изменили размер экранного окна.
Обратите внимание, что если ваш график сделан одним из
lattice
илиggplot2
вы должны явно распечатать график. Смотрите этот ответ, который объясняет это более подробно, а также ссылки на R FAQ: qplot ggplot не выполняется при поиске2. Сейчас я смотрю на график на своем экране и хочу скопировать его «как есть» на диск.
Это должно идеально скопировать изображение с учетом любого изменения размера, которое вы сделали для интерактивного окна. Как и в первой части этого ответа, вы можете заменить его
pdf
другими типами файлов, такими какpng
.источник
getwd()
dev.print
. Есть два тесно связанных вопроса, на которые, я думаю, нужны разные ответы. Второй подвопрос в основном «Как сохранить изображение, которое я уже нанес на экран?». Извините, если мое редактирование не очень хорошее, не стесняйтесь улучшать мои изменения.m3=garchFit(~arma(3,0)+garch(1,1))
иplot(m3)
.Если вы хотите продолжать видеть график в R, другой вариант заключается в использовании
dev.copy
:Если вы попали в беспорядок в слишком многих окнах графиков в R, используйте,
graphics.off()
чтобы закрыть все окна графиков.источник
dev.print
лучше, поскольку он точно копирует изображение с экрана.dev.copy
заставляет каждое изображение быть квадратным по умолчанию. Это расстраивает, если вы все настроили красиво в интерактивном режимеdev.print()
параметры ширины и высоты, чтобы определить размеры. напримерdev.copy(device = png, filename = 'MyPlot.png', width = 1000, height = 500) dev.off()
Если вы используете
ggplot2
предпочтительный способ сохранения, это использоватьggsave
. Сначала вы должны построить, после создания сюжета вы называетеggsave
:Формат изображения определяется расширением, которое вы выбираете для имени файла. Дополнительные параметры могут быть переданы
ggsave
, в частностиwidth
,height
иdpi
.источник
dev
, это решение работало на виртуальной машине без графических устройств.Как это
или это
или это
И, вероятно, другие тоже. Они все перечислены вместе на страницах справки.
источник
По первому вопросу я считаю,
dev.print
что лучше всего работать в интерактивном режиме. Сначала вы настраиваете свой график визуально, и когда вы довольны тем, что видите, вы можете попросить R сохранить текущий график на дискВы можете заменить
pdf
на другие форматы, такие какpng
.Это скопирует изображение в точности так, как вы видите его на экране. Проблема
dev.copy
в том, что изображение часто отличается и не запоминает размер окна и соотношение сторон - это заставляет график быть квадратным по умолчанию.По второму вопросу (как уже отвечали другие) вы должны направить вывод на диск, прежде чем выполнять свои команды печати.
источник
Если вы используете R Studio http://rstudio.org/, есть специальное меню для сохранения вашего графика в любом формате и в любом разрешении, которое вы выберете.
источник
Если вы откроете устройство, используя
png()
,bmp()
иpdf()
т. Д., Как рекомендует Андри (лучший ответ), окна с графиками не будут открываться, будут созданы только файлы * .png, * bmp или * .pdf. Это удобно в массовых вычислениях, поскольку R может обрабатывать только ограниченное количество графических окон.Однако, если вы хотите увидеть графики и сохранить их, звоните
savePlot(filename, type)
после того, как графики нарисованы, и окно, содержащее их, активно.источник
источник
Чтобы добавить к этим ответам, если у вас есть сценарий R, содержащий вызовы, которые генерируют графики на экране (собственное устройство), то все они могут быть сохранены в PDF-файл (устройство по умолчанию для неинтерактивной оболочки) "Rplots.pdf "(имя по умолчанию) путем перенаправления скрипта в R из терминала (при условии, что вы работаете в Linux или OS X), например:
Это может быть преобразовано в JPG / PNG по мере необходимости
источник
В некоторых случаях требуется сохранить и распечатать базовый график. Я потратил немного времени и придумал эту полезную функцию:
Обратите внимание, что нужно использовать
quote
, в противном случаеplot(x)
вызов выполняется в глобальной среде иNULL
передаетсяbasesave()
.источник
источник