Eu planto uma regressão linear simples usando R. Eu gostaria de salvar essa imagem como PNG ou JPEG, é possível fazê-lo automaticamente? (via código)
Há duas perguntas diferentes: Primeiro, eu já estou vendo o gráfico no meu monitor e gostaria de salvá-lo como está. Segundo, ainda não gerei o gráfico, mas gostaria de salvá-lo diretamente em disco ao executar meu código de plotagem.
Respostas:
Existem duas perguntas estreitamente relacionadas e uma resposta para cada uma.
1. Uma imagem será gerada no futuro no meu script, como eu a salvo em disco?
Para salvar uma plotagem, faça o seguinte:
png()
,bmp()
,pdf()
ou semelhantedev.off()
Alguns exemplos de código para salvar a plotagem em um
png
arquivo:Isto é descrito na página de ajuda (combinados) para os formatos gráficos
?png
,?bmp
,?jpeg
e?tiff
, bem como na página de ajuda separado para?pdf
.Observe, no entanto, que a imagem pode parecer diferente no disco para o mesmo gráfico plotado diretamente na tela, por exemplo, se você redimensionou a janela na tela.
Observe que, se o seu plot for feito por um
lattice
ouggplot2
você tiver que imprimi-lo explicitamente. Veja esta resposta que explica isso com mais detalhes e também links para a FAQ R: O qplot do ggplot não é executado na fonte2. Atualmente, estou vendo um gráfico na minha tela e quero copiá-lo 'como está' para o disco.
Isso deve copiar a imagem perfeitamente, respeitando qualquer redimensionamento que você tenha feito na janela interativa. Você pode, como na primeira parte desta resposta, substituir
pdf
por outros tipos de arquivos comopng
.fonte
getwd()
dev.print
. Há duas perguntas intimamente relacionadas que, penso, precisam de respostas diferentes. A segunda sub-pergunta é basicamente "Como salvar uma imagem que já plotei na minha tela?". Desculpas se minha edição não for muito boa, fique à vontade para melhorar minhas edições.m3=garchFit(~arma(3,0)+garch(1,1))
eplot(m3)
.Se você quiser continuar vendo a plotagem em R, outra opção é usar
dev.copy
:Se você encontrar muitas janelas de plotagem em R, use
graphics.off()
para fechar todas as janelas de plotagem.fonte
dev.print
é melhor, pois copia a imagem exatamente da tela.dev.copy
força todas as imagens a ficarem quadradas por padrão. Isso é frustrante se você configurou tudo de maneira bem interativadev.print()
com os parâmetros width e height para definir as dimensões. por exemplodev.copy(device = png, filename = 'MyPlot.png', width = 1000, height = 500) dev.off()
Se você usar
ggplot2
a maneira preferida de economizar é usarggsave
. Primeiro você precisa plotar, depois de criar o gráfico que você chamaggsave
:O formato da imagem é determinado pela extensão que você escolher para o nome do arquivo. Os parâmetros adicionais podem ser passados para
ggsave
, nomeadamentewidth
,height
edpi
.fonte
dev
, essa solução funcionava em uma máquina virtual sem dispositivos gráficos.Como isso
ou isto
ou isto
E provavelmente outros também. Eles estão todos listados juntos nas páginas de ajuda.
fonte
Para a primeira pergunta, acho
dev.print
o melhor ao trabalhar interativamente. Primeiro, você configura sua plotagem visualmente e, quando estiver satisfeito com o que vê, pode pedir ao R para salvar a plotagem atual em disco.Você pode substituir
pdf
por outros formatos, comopng
.Isso copiará a imagem exatamente como você a vê na tela. O problema com
dev.copy
é que a imagem geralmente é diferente e não se lembra do tamanho da janela e da proporção - ela força o gráfico a ficar quadrado por padrão.Para a segunda pergunta (como outras pessoas já responderam), você deve direcionar a saída para o disco antes de executar seus comandos de plotagem
fonte
Se você usa o R Studio http://rstudio.org/, existe um menu especial para salvar sua plotagem no formato que desejar e em qualquer resolução que você escolher
fonte
Se você abrir um dispositivo usando
png()
,bmp()
,pdf()
etc., como sugerido por Andrie (a melhor resposta), as janelas com parcelas não vai aparecer aberta, apenas * .png, * bmp ou arquivos * .pdf será criado. Isso é conveniente em cálculos massivos, já que o R pode lidar apenas com um número limitado de janelas gráficas.No entanto, se você quiser ver os gráficos e também salvá-los, ligue
savePlot(filename, type)
depois que os gráficos forem desenhados e a janela que os contiver estiver ativa.fonte
fonte
Para adicionar essas respostas, se você tiver um script R contendo chamadas que geram plotagens para a tela (o dispositivo nativo), todas elas podem ser salvas em um arquivo pdf (o dispositivo padrão para um shell não interativo) "Rplots.pdf "(o nome padrão) redirecionando o script para R a partir do terminal (supondo que você esteja executando o Linux ou OS X), por exemplo:
Isso pode ser convertido em jpg / png, conforme necessário
fonte
Em alguns casos, deseja-se salvar e imprimir um gráfico de base r. Passei um pouco de tempo e criei esta função de utilitário:
Observe que é preciso usar
quote
, caso contrário, aplot(x)
chamada é executada no ambiente global eNULL
é passada parabasesave()
.fonte
fonte