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