Buenas tardes: Hasta ahora he utilizado savePlot() en ejecuciones de R en Windows, donde lo que hago es grabar la ventana de gráficos mediante dev.cur() en formato pdf. Concretamente éste es el código:> savePlot(filename = ruta_pdf, type = "pdf", device = dev.cur(),restoreConsole = TRUE) Este comando está dentro de un bucle de "n" ejecuciones, por lo que guardo un pdf por cada variable que trabajo: variable1.pdf, variable2.pdf, variable3.pdf... Sin embargo, estoy empezando a meterme en automatización de procesos en R, para lo cual lanzo un script desde Windows a través de la ejecución de R en la consola de DOS ("CMD BATCH script.r"), es decir, sin abrir Rgui en Windows. El problema es que como no abro R en Windows, no existe la ventana gráfica, con lo que falla el comando saveplot() y he visto que automáticamente se crea un fichero "Rplots.pdf" en el que cada página guarda la salida gráfica de cada variable. ¿Alguien sabe cómo puedo grabar lo que sería una salida pdf individual para cada variable, como he venido haciendo hasta ahora con savePlot()? Muchas gracias. Isidro Hidalgo Arellano Observatorio Regional de Empleo Consejería de Empleo y Economía ihidalgo en jccm.es http://www.jccm.es
Carlos J. Gil Bellosta
2012-Apr-02 16:08 UTC
[R-es] Usando R CMD BATCH no me funciona savePlot()
Hola, ¿qué tal? Yo suelo guardar mis gráficos haciendo algo así como png( "mi_fichero.png" ) plot( lo que sea ) dev.off() Este pedazo de código puede ir en un bucle, etc. (Obviamente, en tales casos, va cambiando el nombre del fichero, usualmente utilizando "paste"). Supongo que para exportar a pdf será parecido... Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 2 de abril de 2012 18:02, Isidro Hidalgo <ihidalgo en jccm.es> escribió:> Buenas tardes: > Hasta ahora he utilizado savePlot() en ejecuciones de R en Windows, donde lo > que hago es grabar la ventana de gráficos mediante dev.cur() en formato pdf. > Concretamente éste es el código: >> savePlot(filename = ruta_pdf, type = "pdf", device = dev.cur(), > restoreConsole = TRUE) > Este comando está dentro de un bucle de "n" ejecuciones, por lo que guardo > un pdf por cada variable que trabajo: variable1.pdf, variable2.pdf, > variable3.pdf... > Sin embargo, estoy empezando a meterme en automatización de procesos en R, > para lo cual lanzo un script desde Windows a través de la ejecución de R en > la consola de DOS ("CMD BATCH script.r"), es decir, sin abrir Rgui en > Windows. > El problema es que como no abro R en Windows, no existe la ventana gráfica, > con lo que falla el comando saveplot() y he visto que automáticamente se > crea un fichero "Rplots.pdf" en el que cada página guarda la salida gráfica > de cada variable. > ¿Alguien sabe cómo puedo grabar lo que sería una salida pdf individual para > cada variable, como he venido haciendo hasta ahora con savePlot()? > Muchas gracias. > > Isidro Hidalgo Arellano > Observatorio Regional de Empleo > Consejería de Empleo y Economía > ihidalgo en jccm.es > http://www.jccm.es > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es
Hola, Además de las opciones para hacer el gráfico, en el comando en la consola de DOS: CMD BATCH.... ¿incluyes alguna opción --vanilla u otra...? Saludos, Carlos Ortega www.qualityexcellence.es El 2 de abril de 2012 18:02, Isidro Hidalgo <ihidalgo@jccm.es> escribió:> Buenas tardes: > Hasta ahora he utilizado savePlot() en ejecuciones de R en Windows, donde > lo > que hago es grabar la ventana de gráficos mediante dev.cur() en formato > pdf. > Concretamente éste es el código: > > savePlot(filename = ruta_pdf, type = "pdf", device = dev.cur(), > restoreConsole = TRUE) > Este comando está dentro de un bucle de "n" ejecuciones, por lo que guardo > un pdf por cada variable que trabajo: variable1.pdf, variable2.pdf, > variable3.pdf... > Sin embargo, estoy empezando a meterme en automatización de procesos en R, > para lo cual lanzo un script desde Windows a través de la ejecución de R en > la consola de DOS ("CMD BATCH script.r"), es decir, sin abrir Rgui en > Windows. > El problema es que como no abro R en Windows, no existe la ventana gráfica, > con lo que falla el comando saveplot() y he visto que automáticamente se > crea un fichero "Rplots.pdf" en el que cada página guarda la salida gráfica > de cada variable. > ¿Alguien sabe cómo puedo grabar lo que sería una salida pdf individual para > cada variable, como he venido haciendo hasta ahora con savePlot()? > Muchas gracias. > > Isidro Hidalgo Arellano > Observatorio Regional de Empleo > Consejería de Empleo y Economía > ihidalgo@jccm.es > http://www.jccm.es > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Hola, yo acostumbro a usar Rscript: desde linea de comandos: ----------------- Rscript archivo.R grafico.png 600 400 ----------------- desde Python: ----------------- import subprocess subprocess.Popen([ r"Rscript","archivo.R", grafico.png, 600, 400 ]).wait() ----------------- y archivo.R contiene: ----------------- args <- commandArgs(TRUE) file=args[1] width=as.numeric(args[2]) height=as.numeric(args[3]) png(file, width=width, height=height) barplot(1:2, names.arg=c("Xavi","is the Best"), main="xavi is the best") dev.off() ----------------- saludos 2012/4/3 Carlos Ortega <cof en qualityexcellence.es>:> Hola, > > Además de las opciones para hacer el gráfico, en el comando en la consola > de DOS: CMD BATCH.... ¿incluyes alguna opción --vanilla u otra...? > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > El 2 de abril de 2012 18:02, Isidro Hidalgo <ihidalgo en jccm.es> escribió: > >> Buenas tardes: >> Hasta ahora he utilizado savePlot() en ejecuciones de R en Windows, donde >> lo >> que hago es grabar la ventana de gráficos mediante dev.cur() en formato >> pdf. >> Concretamente éste es el código: >> > savePlot(filename = ruta_pdf, type = "pdf", device = dev.cur(), >> restoreConsole = TRUE) >> Este comando está dentro de un bucle de "n" ejecuciones, por lo que guardo >> un pdf por cada variable que trabajo: variable1.pdf, variable2.pdf, >> variable3.pdf... >> Sin embargo, estoy empezando a meterme en automatización de procesos en R, >> para lo cual lanzo un script desde Windows a través de la ejecución de R en >> la consola de DOS ("CMD BATCH script.r"), es decir, sin abrir Rgui en >> Windows. >> El problema es que como no abro R en Windows, no existe la ventana gráfica, >> con lo que falla el comando saveplot() y he visto que automáticamente se >> crea un fichero "Rplots.pdf" en el que cada página guarda la salida gráfica >> de cada variable. >> ¿Alguien sabe cómo puedo grabar lo que sería una salida pdf individual para >> cada variable, como he venido haciendo hasta ahora con savePlot()? >> Muchas gracias. >> >> Isidro Hidalgo Arellano >> Observatorio Regional de Empleo >> Consejería de Empleo y Economía >> ihidalgo en jccm.es >> http://www.jccm.es >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >
Hola, Acabo de probar esta solución y funciona. Se trata de un bucle de cuatro vueltas, y en cada vuelta se generan dos gráficos. He probado la opción de que se guarden todos los gráficos en un sólo fichero pdf, como que se guarden en cuatro ficheros pdfs independientes. ############################ setwd("C:/directorio-de trabajo-donde-se-crearan-los-pdfs") #Para crear varios pdfs independientes uno por cada ciclo del bucle pdf("Salida%03d.pdf", onefile=FALSE) #Para guardar todas las salidas del bucle en el mismo fichero pdf #pdf("Salida.pdf", onefile=TRUE) for(i in 1:4) { ## Using "log = TRUE" for an extended range : par(mfrow=c(2,1)) plot(function(x) dnorm(x, log=TRUE), -60, 50, main = "log { Normal density }") curve(log(dnorm(x)), add=TRUE, col="red",lwd=2) mtext("dnorm(x, log=TRUE)", adj=0) mtext("log(dnorm(x))", col="red", adj=1) plot(function(x) pnorm(x, log.p=TRUE), -50, 10, main = "log { Normal Cumulative }") curve(log(pnorm(x)), add=TRUE, col="red",lwd=2) mtext("pnorm(x, log=TRUE)", adj=0) mtext("log(pnorm(x))", col="red", adj=1) } dev.off() ############################ Saludos, Carlos Ortega www.qualityexcellence.es El 2 de abril de 2012 18:02, Isidro Hidalgo <ihidalgo@jccm.es> escribió:> Buenas tardes: > Hasta ahora he utilizado savePlot() en ejecuciones de R en Windows, donde > lo > que hago es grabar la ventana de gráficos mediante dev.cur() en formato > pdf. > Concretamente éste es el código: > > savePlot(filename = ruta_pdf, type = "pdf", device = dev.cur(), > restoreConsole = TRUE) > Este comando está dentro de un bucle de "n" ejecuciones, por lo que guardo > un pdf por cada variable que trabajo: variable1.pdf, variable2.pdf, > variable3.pdf... > Sin embargo, estoy empezando a meterme en automatización de procesos en R, > para lo cual lanzo un script desde Windows a través de la ejecución de R en > la consola de DOS ("CMD BATCH script.r"), es decir, sin abrir Rgui en > Windows. > El problema es que como no abro R en Windows, no existe la ventana gráfica, > con lo que falla el comando saveplot() y he visto que automáticamente se > crea un fichero "Rplots.pdf" en el que cada página guarda la salida gráfica > de cada variable. > ¿Alguien sabe cómo puedo grabar lo que sería una salida pdf individual para > cada variable, como he venido haciendo hasta ahora con savePlot()? > Muchas gracias. > > Isidro Hidalgo Arellano > Observatorio Regional de Empleo > Consejería de Empleo y Economía > ihidalgo@jccm.es > http://www.jccm.es > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
¡Funciona! Muchísimas gracias a todos por vuestra ayuda. Isidro Hidalgo Arellano Observatorio Regional de Empleo Consejería de Empleo y Economía ihidalgo en jccm.es http://www.jccm.es De: Carlos Ortega [mailto:cof en qualityexcellence.es] Enviado el: martes, 03 de abril de 2012 0:02 Para: Isidro Hidalgo CC: r-help-es en r-project.org Asunto: Re: [R-es] Usando R CMD BATCH no me funciona savePlot() Hola, Acabo de probar esta solución y funciona. Se trata de un bucle de cuatro vueltas, y en cada vuelta se generan dos gráficos. He probado la opción de que se guarden todos los gráficos en un sólo fichero pdf, como que se guarden en cuatro ficheros pdfs independientes. ############################ setwd("C:/directorio-de trabajo-donde-se-crearan-los-pdfs") #Para crear varios pdfs independientes uno por cada ciclo del bucle pdf("Salida%03d.pdf", onefile=FALSE) #Para guardar todas las salidas del bucle en el mismo fichero pdf #pdf("Salida.pdf", onefile=TRUE) for(i in 1:4) { ## Using "log = TRUE" for an extended range : par(mfrow=c(2,1)) plot(function(x) dnorm(x, log=TRUE), -60, 50, main = "log { Normal density }") curve(log(dnorm(x)), add=TRUE, col="red",lwd=2) mtext("dnorm(x, log=TRUE)", adj=0) mtext("log(dnorm(x))", col="red", adj=1) plot(function(x) pnorm(x, log.p=TRUE), -50, 10, main = "log { Normal Cumulative }") curve(log(pnorm(x)), add=TRUE, col="red",lwd=2) mtext("pnorm(x, log=TRUE)", adj=0) mtext("log(pnorm(x))", col="red", adj=1) } dev.off() ############################ Saludos, Carlos Ortega www.qualityexcellence.es El 2 de abril de 2012 18:02, Isidro Hidalgo <ihidalgo en jccm.es> escribió: Buenas tardes: Hasta ahora he utilizado savePlot() en ejecuciones de R en Windows, donde lo que hago es grabar la ventana de gráficos mediante dev.cur() en formato pdf. Concretamente éste es el código:> savePlot(filename = ruta_pdf, type = "pdf", device = dev.cur(),restoreConsole = TRUE) Este comando está dentro de un bucle de "n" ejecuciones, por lo que guardo un pdf por cada variable que trabajo: variable1.pdf, variable2.pdf, variable3.pdf... Sin embargo, estoy empezando a meterme en automatización de procesos en R, para lo cual lanzo un script desde Windows a través de la ejecución de R en la consola de DOS ("CMD BATCH script.r"), es decir, sin abrir Rgui en Windows. El problema es que como no abro R en Windows, no existe la ventana gráfica, con lo que falla el comando saveplot() y he visto que automáticamente se crea un fichero "Rplots.pdf" en el que cada página guarda la salida gráfica de cada variable. ¿Alguien sabe cómo puedo grabar lo que sería una salida pdf individual para cada variable, como he venido haciendo hasta ahora con savePlot()? Muchas gracias. Isidro Hidalgo Arellano Observatorio Regional de Empleo Consejería de Empleo y Economía ihidalgo en jccm.es http://www.jccm.es _______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es -- Saludos, Carlos Ortega www.qualityexcellence.es