Je trace une régression linéaire simple à l'aide de R. Je voudrais enregistrer cette image au format PNG ou JPEG, est-il possible de le faire automatiquement? (via code)
Il y a deux questions différentes: Premièrement, je regarde déjà l'intrigue sur mon moniteur et je voudrais l'enregistrer tel quel. Deuxièmement, je n'ai pas encore généré le tracé, mais je voudrais l'enregistrer directement sur le disque lorsque j'exécute mon code de tracé.
Réponses:
Il y a deux questions étroitement liées et une réponse pour chacune.
1. Une image sera générée à l'avenir dans mon script, comment l'enregistrer sur le disque?
Pour enregistrer un tracé, vous devez procéder comme suit:
png()
,bmp()
,pdf()
ou similairedev.off()
Un exemple de code pour enregistrer le tracé dans un
png
fichier:Ceci est décrit dans la page d'aide (combinée) pour les formats graphiques
?png
,?bmp
,?jpeg
et?tiff
ainsi que dans la page d'aide séparée pour?pdf
.Notez cependant que l'image peut différer sur le disque du même tracé directement tracé sur votre écran, par exemple si vous avez redimensionné la fenêtre à l'écran.
Notez que si votre tracé est créé par l'un
lattice
ou l' autre,ggplot2
vous devez imprimer explicitement le tracé. Voir cette réponse qui explique cela plus en détail et également des liens vers la FAQ R: qplot de ggplot ne s'exécute pas lors du sourcing2. Je regarde actuellement un tracé sur mon écran et je veux le copier tel quel sur le disque.
Cela devrait parfaitement copier l'image, en respectant tout redimensionnement que vous avez fait à la fenêtre interactive. Vous pouvez, comme dans la première partie de cette réponse, remplacer
pdf
par d'autres types de fichiers tels quepng
.la source
getwd()
dev.print
. Il y a deux questions étroitement liées qui, à mon avis, nécessitent des réponses différentes. La deuxième sous-question est essentiellement "Comment puis-je enregistrer une image que j'ai déjà tracée sur mon écran?". Toutes mes excuses si ma modification n'est pas très bonne, n'hésitez pas à améliorer mes modifications.m3=garchFit(~arma(3,0)+garch(1,1))
etplot(m3)
.Si vous voulez continuer à voir l'intrigue dans R, une autre option est d'utiliser
dev.copy
:Si vous atteignez un encombrement de trop de fenêtres de tracé dans R, utilisez
graphics.off()
pour fermer toutes les fenêtres de tracé.la source
dev.print
est mieux car il copie exactement l'image de l'écran.dev.copy
force chaque image à être carrée par défaut. C'est frustrant si vous avez tout configuré de manière interactivedev.print()
avec les paramètres largeur et hauteur pour définir les dimensions. par exempledev.copy(device = png, filename = 'MyPlot.png', width = 1000, height = 500) dev.off()
Si vous utilisez
ggplot2
la méthode d'enregistrement préférée, utilisezggsave
. Vous devez d'abord tracer, après avoir créé le tracé que vous appelezggsave
:Le format de l'image est déterminé par l'extension que vous choisissez pour le nom de fichier. Peuvent être transmis à d' autres paramètres
ggsave
, notammentwidth
,height
etdpi
.la source
dev
, cette solution fonctionnait sur une machine virtuelle sans périphériques graphiques.Comme ça
ou ca
ou ca
Et probablement d'autres aussi. Ils sont tous répertoriés ensemble dans les pages d'aide.
la source
Pour la première question, je trouve
dev.print
être le meilleur lorsque je travaille de manière interactive. Tout d'abord, vous configurez votre tracé visuellement et lorsque vous êtes satisfait de ce que vous voyez, vous pouvez demander à R d'enregistrer le tracé actuel sur le disqueVous pouvez remplacer
pdf
par d'autres formats tels quepng
.Cela copiera l'image exactement comme vous la voyez à l'écran. Le problème
dev.copy
est que l'image est souvent différente et ne se souvient pas de la taille de la fenêtre et du rapport hauteur / largeur - elle force le tracé à être carré par défaut.Pour la deuxième question, (comme d'autres l'ont déjà répondu), vous devez diriger la sortie sur le disque avant d'exécuter vos commandes de traçage
la source
Si vous utilisez R Studio http://rstudio.org/ il y a un menu spécial pour enregistrer votre tracé sous n'importe quel format que vous aimez et à n'importe quelle résolution que vous choisissez
la source
Si vous ouvrez un appareil à l' aide
png()
,bmp()
,pdf()
etc. comme suggéré par Andrie (la meilleure réponse), les fenêtres avec des parcelles ne seront pas pop - up ouvert, juste * .png, * .bmp ou * fichiers .pdf seront créés. C'est pratique dans les calculs massifs, car R ne peut gérer qu'un nombre limité de fenêtres graphiques.Cependant, si vous souhaitez voir les tracés et les enregistrer, appelez une
savePlot(filename, type)
fois les tracés dessinés et la fenêtre les contenant active.la source
la source
Pour ajouter à ces réponses, si vous avez un script R contenant des appels qui génèrent des tracés à filtrer (le périphérique natif), ceux-ci peuvent tous être enregistrés dans un fichier pdf (le périphérique par défaut pour un shell non interactif) "Rplots.pdf "(le nom par défaut) en redirigeant le script vers R depuis le terminal (en supposant que vous utilisez linux ou OS X), par exemple:
Cela pourrait être converti en jpg / png si nécessaire
la source
Dans certains cas, on veut à la fois enregistrer et imprimer un tracé de base r. J'ai passé un peu de temps et j'ai trouvé cette fonction utilitaire:
Notez que l'on doit utiliser
quote
, sinon l'plot(x)
appel est exécuté dans l'environnement global etNULL
est passé àbasesave()
.la source
la source