Eva Prieto Castro
2013-Feb-26 10:11 UTC
[R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible
Buenos días: Sigo cabezudeando con el tema de los gráficos; a ver si a alguien se le ocurre alguna idea... Supongamos este código: library(plotrix) graphics.off() windows(width=8.27, height=11.69) plot(3:10) #plot(3:10, main="Axis break test") par(xpd=TRUE) text(4, 11,"Axis break test") axis.break() axis.break(2,2.9,style="zigzag") mtext("Texto adicional", side=1, line=2) text(4, 9,"Texto") dev.copy2pdf(file="IntentoEnesimo.pdf",height=11.69, width=8.27) shell.exec(file.path(getwd(), "IntentoEnesimo.pdf")) Como podéis comprobar, el título "Axis break test" aparece en la pantalla gráfica, pero no en el pdf. Ésto es así porque lo escribo con text(). Si retiro la línea text(4, 11,"Axis break test") y cambio plot(3:10) por plot(3:10, main="Axis break test") sí que aparece en el pdf. Es lógico: forma parte del plot, y se tiene en cuenta al "expandir" el plot para su volcado en pdf. Pero sucede que necesito lograr un correcto funcionamiento para este caso (fuera del plot, con text()), porque debo dar cobertura a gráficos que llevan "información" (texto, líneas emulando eje horizonal superior, etc.) fuera del plot pero anexa a éste. No sé si me explico... ¿Se os ocurre alguna forma?. He probado utilizando layout y tampoco lo consigo. Es como si el plot adquiriese el protagonismo total y absoluto para el dev.copy2pdf. Gracias. Eva P.D.: Debo descartar alternativas tales como el uso del paquete qqplot2 (no lo podría compatibilizar con funciones que tengo que usar necesariamente dentro de la región del plot), y también descarto hacer pdf() y dev.off(). [[alternative HTML version deleted]]
Eva por que no mantienes las proporciones del área del plot respecto del tamaño de la hoja, no se si serán las mejores proporciones en tu ejemplo, es cuestión de probar, pero algo así: dev.copy2pdf(file="IntentoEnesimo.pdf",height=8.18, width=5.79) Daniel Merino El día 26 de febrero de 2013 07:11, Eva Prieto Castro <evapcastro en yahoo.es> escribió:> > Buenos días: > > Sigo cabezudeando con el tema de los gráficos; a ver si a alguien se le ocurre alguna idea... > > Supongamos este código: > > library(plotrix) > graphics.off() > windows(width=8.27, height=11.69) > > plot(3:10) > #plot(3:10, main="Axis break test") > par(xpd=TRUE) > text(4, 11,"Axis break test") > axis.break() > axis.break(2,2.9,style="zigzag") > mtext("Texto adicional", side=1, line=2) > text(4, 9,"Texto") > > dev.copy2pdf(file="IntentoEnesimo.pdf",height=11.69, width=8.27) > shell.exec(file.path(getwd(), "IntentoEnesimo.pdf")) > > Como podéis comprobar, el título "Axis break test" aparece en la pantalla gráfica, pero no en el pdf. Ésto es así porque lo escribo con text(). Si retiro la línea text(4, 11,"Axis break test") y cambio plot(3:10) por plot(3:10, main="Axis break test") sí que aparece en el pdf. Es lógico: forma parte del plot, y se tiene en cuenta al "expandir" el plot para su volcado en pdf. Pero sucede que necesito lograr un correcto funcionamiento para este caso (fuera del plot, con text()), porque debo dar cobertura a gráficos que llevan "información" (texto, líneas emulando eje horizonal superior, etc.) fuera del plot pero anexa a éste. No sé si me explico... > > ¿Se os ocurre alguna forma?. He probado utilizando layout y tampoco lo consigo. Es como si el plot adquiriese el protagonismo total y absoluto para el dev.copy2pdf. > > Gracias. > > Eva > > P.D.: Debo descartar alternativas tales como el uso del paquete qqplot2 (no lo podría compatibilizar con funciones que tengo que usar necesariamente dentro de la región del plot), y también descarto hacer pdf() y dev.off(). > > > [[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 >-- Daniel
Eva Prieto Castro
2013-Feb-26 12:47 UTC
[R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible
Daniel, así funciona, al menos el ejemplo básico que os reporté. Pero no entiendo el porqué; ¿cómo calculaste eso?. El método que elija como definitivo tengo que generalizarlo; es decir, ponerlo como función. ¿Qué criterio debo utilizar entonces?. Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 13:28 Eva por que no mantienes las proporciones del área del plot respecto del tamaño de la hoja, no se si serán las mejores proporciones en tu ejemplo, es cuestión de probar, pero algo así: dev.copy2pdf(file="IntentoEnesimo.pdf",height=8.18, width=5.79) Daniel Merino El día 26 de febrero de 2013 07:11, Eva Prieto Castro <evapcastro@yahoo.es> escribió:> > Buenos días: > > Sigo cabezudeando con el tema de los gráficos; a ver si a alguien se le ocurre alguna idea... > > Supongamos este código: > > library(plotrix) > graphics.off() > windows(width=8.27, height=11.69) > > plot(3:10) > #plot(3:10, main="Axis break test") > par(xpd=TRUE) > text(4, 11,"Axis break test") > axis.break() > axis.break(2,2.9,style="zigzag") > mtext("Texto adicional", side=1, line=2) > text(4, 9,"Texto") > > dev.copy2pdf(file="IntentoEnesimo.pdf",height=11.69, width=8.27) > shell.exec(file.path(getwd(), "IntentoEnesimo.pdf")) > > Como podéis comprobar, el título "Axis break test" aparece en la pantalla gráfica, pero no en el pdf. Ésto es así porque lo escribo con text(). Si retiro la línea text(4, 11,"Axis break test") y cambio plot(3:10) por plot(3:10, main="Axis break test") sí que aparece en el pdf. Es lógico: forma parte del plot, y se tiene en cuenta al "expandir" el plot para su volcado en pdf. Pero sucede que necesito lograr un correcto funcionamiento para este caso (fuera del plot, con text()), porque debo dar cobertura a gráficos que llevan "información" (texto, líneas emulando eje horizonal superior, etc.) fuera del plot pero anexa a éste. No sé si me explico... > > ¿Se os ocurre alguna forma?. He probado utilizando layout y tampoco lo consigo. Es como si el plot adquiriese el protagonismo total y absoluto para el dev.copy2pdf. > > Gracias. > > Eva > > P.D.: Debo descartar alternativas tales como el uso del paquete qqplot2 (no lo podría compatibilizar con funciones que tengo que usar necesariamente dentro de la región del plot), y también descarto hacer pdf() y dev.off(). > > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Daniel [[alternative HTML version deleted]]
Eva Prieto Castro
2013-Feb-26 12:49 UTC
[R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible
Daniel, creo que no me vale así; al imprimir el pdf no ocupa todo el din A4. Un saludo --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 13:28 Eva por que no mantienes las proporciones del área del plot respecto del tamaño de la hoja, no se si serán las mejores proporciones en tu ejemplo, es cuestión de probar, pero algo así: dev.copy2pdf(file="IntentoEnesimo.pdf",height=8.18, width=5.79) Daniel Merino El día 26 de febrero de 2013 07:11, Eva Prieto Castro <evapcastro@yahoo.es> escribió:> > Buenos días: > > Sigo cabezudeando con el tema de los gráficos; a ver si a alguien se le ocurre alguna idea... > > Supongamos este código: > > library(plotrix) > graphics.off() > windows(width=8.27, height=11.69) > > plot(3:10) > #plot(3:10, main="Axis break test") > par(xpd=TRUE) > text(4, 11,"Axis break test") > axis.break() > axis.break(2,2.9,style="zigzag") > mtext("Texto adicional", side=1, line=2) > text(4, 9,"Texto") > > dev.copy2pdf(file="IntentoEnesimo.pdf",height=11.69, width=8.27) > shell.exec(file.path(getwd(), "IntentoEnesimo.pdf")) > > Como podéis comprobar, el título "Axis break test" aparece en la pantalla gráfica, pero no en el pdf. Ésto es así porque lo escribo con text(). Si retiro la línea text(4, 11,"Axis break test") y cambio plot(3:10) por plot(3:10, main="Axis break test") sí que aparece en el pdf. Es lógico: forma parte del plot, y se tiene en cuenta al "expandir" el plot para su volcado en pdf. Pero sucede que necesito lograr un correcto funcionamiento para este caso (fuera del plot, con text()), porque debo dar cobertura a gráficos que llevan "información" (texto, líneas emulando eje horizonal superior, etc.) fuera del plot pero anexa a éste. No sé si me explico... > > ¿Se os ocurre alguna forma?. He probado utilizando layout y tampoco lo consigo. Es como si el plot adquiriese el protagonismo total y absoluto para el dev.copy2pdf. > > Gracias. > > Eva > > P.D.: Debo descartar alternativas tales como el uso del paquete qqplot2 (no lo podría compatibilizar con funciones que tengo que usar necesariamente dentro de la región del plot), y también descarto hacer pdf() y dev.off(). > > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Daniel [[alternative HTML version deleted]]
Eva, Respecto del primer mensaje lo que hice fue calcular el 70% del alto y el ancho (arbitrario para que ingresara al área el texto superior), puede ser que la proporción correcta sea diferente, cuestión de ajustar hasta que conforme. No veo problemas para que esto lo incluyas en una función al fin y al cabo esas proporciones deberían mantenerse en la medida que los textos que pongas por fuera del área del plot no sean muy diferentes. Respecto del segundo mensaje, abrí el IntentoEnesimo.pdf en mi Adobe Reader 9 Versión 9.2.0.124 en una sesión de Windows XP, lo mandé a la impresora e imprimió todo. Para la impresión desde el Adobe Reader elegí como escala de página tanto "Ninguno" (supongo deriva al tamaño de la página que esta configurada como A4) como "Ajustar a área de Impresión". Los resultados como es de esperar son diferentes en cuanto a los márgenes pero en ambos casos a mi me imprimió todo. Daniel Merino El 26 de febrero de 2013 09:47, Eva Prieto Castro <evapcastro@yahoo.es>escribió:> > Daniel, así funciona, al menos el ejemplo básico que os reporté. Pero no > entiendo el porqué; ¿cómo calculaste eso?. > > El método que elija como definitivo tengo que generalizarlo; es decir, > ponerlo como función. ¿Qué criterio debo utilizar entonces?. > > Eva > --- El *mar, 26/2/13, daniel <daniel319@gmail.com>* escribió: > > > De: daniel <daniel319@gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro@yahoo.es> > CC: r-help-es@r-project.org > Fecha: martes, 26 de febrero, 2013 13:28 > > > Eva por que no mantienes las proporciones del área del plot respecto > del tamaño de la hoja, no se si serán las mejores proporciones en tu > ejemplo, es cuestión de probar, pero algo así: > > dev.copy2pdf(file="IntentoEnesimo.pdf",height=8.18, width=5.79) > > Daniel Merino > > > El día 26 de febrero de 2013 07:11, Eva Prieto Castro > <evapcastro@yahoo.es <http://mc/compose?to=evapcastro@yahoo.es>> escribió: > > > > Buenos días: > > > > Sigo cabezudeando con el tema de los gráficos; a ver si a alguien se le > ocurre alguna idea... > > > > Supongamos este código: > > > > library(plotrix) > > graphics.off() > > windows(width=8.27, height=11.69) > > > > plot(3:10) > > #plot(3:10, main="Axis break test") > > par(xpd=TRUE) > > text(4, 11,"Axis break test") > > axis.break() > > axis.break(2,2.9,style="zigzag") > > mtext("Texto adicional", side=1, line=2) > > text(4, 9,"Texto") > > > > dev.copy2pdf(file="IntentoEnesimo.pdf",height=11.69, width=8.27) > > shell.exec(file.path(getwd(), "IntentoEnesimo.pdf")) > > > > Como podéis comprobar, el título "Axis break test" aparece en la > pantalla gráfica, pero no en el pdf. Ésto es así porque lo escribo con > text(). Si retiro la línea text(4, 11,"Axis break test") y cambio > plot(3:10) por plot(3:10, main="Axis break test") sí que aparece en el pdf. > Es lógico: forma parte del plot, y se tiene en cuenta al "expandir" el plot > para su volcado en pdf. Pero sucede que necesito lograr un correcto > funcionamiento para este caso (fuera del plot, con text()), porque debo dar > cobertura a gráficos que llevan "información" (texto, líneas emulando eje > horizonal superior, etc.) fuera del plot pero anexa a éste. No sé si me > explico... > > > > ¿Se os ocurre alguna forma?. He probado utilizando layout y tampoco lo > consigo. Es como si el plot adquiriese el protagonismo total y absoluto > para el dev.copy2pdf. > > > > Gracias. > > > > Eva > > > > P.D.: Debo descartar alternativas tales como el uso del paquete qqplot2 > (no lo podría compatibilizar con funciones que tengo que usar > necesariamente dentro de la región del plot), y también descarto hacer > pdf() y dev.off(). > > > > > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org <http://mc/compose?to=R-help-es@r-project.org> > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > > -- > Daniel > >-- Daniel [[alternative HTML version deleted]]
Eva Prieto Castro
2013-Feb-26 14:54 UTC
[R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible
Gracias, Daniel; si lo entendí bien, no me sirve esa alternativa. No me resulta suficiente con el hecho de que salga todo en el pdf: necesito que salga ocupando todo el din A4, es decir, expandido. A lo mejor estoy dando vueltas sobre un mismo punto, pero es que me resisto a pensar que no hay algún truco o solución para ésto. Saludos. Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 15:50 Eva, Respecto del primer mensaje lo que hice fue calcular el 70% del alto y el ancho (arbitrario para que ingresara al área el texto superior), puede ser que la proporción correcta sea diferente, cuestión de ajustar hasta que conforme. No veo problemas para que esto lo incluyas en una función al fin y al cabo esas proporciones deberían mantenerse en la medida que los textos que pongas por fuera del área del plot no sean muy diferentes. Respecto del segundo mensaje, abrí el IntentoEnesimo.pdf en mi Adobe Reader 9 Versión 9.2.0.124 en una sesión de Windows XP, lo mandé a la impresora e imprimió todo. Para la impresión desde el Adobe Reader elegí como escala de página tanto "Ninguno" (supongo deriva al tamaño de la página que esta configurada como A4) como "Ajustar a área de Impresión". Los resultados como es de esperar son diferentes en cuanto a los márgenes pero en ambos casos a mi me imprimió todo. Daniel Merino El 26 de febrero de 2013 09:47, Eva Prieto Castro <evapcastro@yahoo.es> escribió: Daniel, así funciona, al menos el ejemplo básico que os reporté. Pero no entiendo el porqué; ¿cómo calculaste eso?. El método que elija como definitivo tengo que generalizarlo; es decir, ponerlo como función. ¿Qué criterio debo utilizar entonces?. Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 13:28 Eva por que no mantienes las proporciones del área del plot respecto del tamaño de la hoja, no se si serán las mejores proporciones en tu ejemplo, es cuestión de probar, pero algo así: dev.copy2pdf(file="IntentoEnesimo.pdf",height=8.18, width=5.79) Daniel Merino El día 26 de febrero de 2013 07:11, Eva Prieto Castro <evapcastro@yahoo.es> escribió:> > Buenos días: > > Sigo cabezudeando con el tema de los gráficos; a ver si a alguien se le ocurre alguna idea...> > Supongamos este código: > > library(plotrix) > graphics.off() > windows(width=8.27, height=11.69) > > plot(3:10) > #plot(3:10, main="Axis break test") > par(xpd=TRUE)> text(4, 11,"Axis break test") > axis.break() > axis.break(2,2.9,style="zigzag") > mtext("Texto adicional", side=1, line=2) > text(4, 9,"Texto") >>dev.copy2pdf(file="IntentoEnesimo.pdf",height=11.69, width=8.27)> shell.exec(file.path(getwd(), "IntentoEnesimo.pdf")) > > Como podéis comprobar, el título "Axis break test" aparece en la pantalla gráfica, pero no en el pdf. Ésto es así porque lo escribo con text(). Si retiro la línea text(4, 11,"Axis break test") y cambio plot(3:10) por plot(3:10, main="Axis break test") sí que aparece en el pdf. Es lógico: forma parte del plot, y se tiene en cuenta al "expandir" el plot para su volcado en pdf. Pero sucede que necesito lograr un correcto funcionamiento para este caso (fuera del plot, con text()), porque debo dar cobertura a gráficos que llevan "información" (texto, líneas emulando eje horizonal superior, etc.) fuera del plot pero anexa a éste. No sé si me explico...> > ¿Se os ocurre alguna forma?. He probado utilizando layout y tampoco lo consigo. Es como si el plot adquiriese el protagonismo total yabsoluto para el dev.copy2pdf.> > Gracias. > > Eva > > P.D.: Debo descartar alternativas tales como el uso del paquete qqplot2 (no lo podría compatibilizar con funciones que tengo que usar necesariamente dentro de la región del plot), y también descarto hacer pdf() y dev.off().> > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org> https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Daniel -- Daniel [[alternative HTML version deleted]]
Eva Prieto Castro
2013-Feb-26 15:09 UTC
[R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible
Hola de nuevo, Volviendo sobre el mismo problema que comentaba esta mañana, me pregunto si es posible crear una especie de plot imaginario (sin ejes visualizados ni labels ni nada) que ocupe todo la pantalla gráfica, y dentro de él meter todo lo que me interese (mi plot, mis text(), mi tabla, etc.). Sería un modo de engañar al dev.copy2pdf, que supuestamente expandiría el plot imaginario, y entonces por extensión quedaría expandido todo lo que haya dibujado en su interior. A lo mejor es muy descabellado, pero por si acaso prefiero consultaros... Gracias. Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 15:50 Eva, Respecto del primer mensaje lo que hice fue calcular el 70% del alto y el ancho (arbitrario para que ingresara al área el texto superior), puede ser que la proporción correcta sea diferente, cuestión de ajustar hasta que conforme. No veo problemas para que esto lo incluyas en una función al fin y al cabo esas proporciones deberían mantenerse en la medida que los textos que pongas por fuera del área del plot no sean muy diferentes. Respecto del segundo mensaje, abrí el IntentoEnesimo.pdf en mi Adobe Reader 9 Versión 9.2.0.124 en una sesión de Windows XP, lo mandé a la impresora e imprimió todo. Para la impresión desde el Adobe Reader elegí como escala de página tanto "Ninguno" (supongo deriva al tamaño de la página que esta configurada como A4) como "Ajustar a área de Impresión". Los resultados como es de esperar son diferentes en cuanto a los márgenes pero en ambos casos a mi me imprimió todo. Daniel Merino El 26 de febrero de 2013 09:47, Eva Prieto Castro <evapcastro@yahoo.es> escribió: Daniel, así funciona, al menos el ejemplo básico que os reporté. Pero no entiendo el porqué; ¿cómo calculaste eso?. El método que elija como definitivo tengo que generalizarlo; es decir, ponerlo como función. ¿Qué criterio debo utilizar entonces?. Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 13:28 Eva por que no mantienes las proporciones del área del plot respecto del tamaño de la hoja, no se si serán las mejores proporciones en tu ejemplo, es cuestión de probar, pero algo así: dev.copy2pdf(file="IntentoEnesimo.pdf",height=8.18, width=5.79) Daniel Merino El día 26 de febrero de 2013 07:11, Eva Prieto Castro <evapcastro@yahoo.es> escribió:> > Buenos días: > > Sigo cabezudeando con el tema de los gráficos; a ver si a alguien se le ocurre alguna idea...> > Supongamos este código: > > library(plotrix) > graphics.off() > windows(width=8.27, height=11.69) > > plot(3:10) > #plot(3:10, main="Axis break test") > par(xpd=TRUE)> text(4, 11,"Axis break test") > axis.break() > axis.break(2,2.9,style="zigzag") > mtext("Texto adicional", side=1, line=2) > text(4, 9,"Texto") >>dev.copy2pdf(file="IntentoEnesimo.pdf",height=11.69, width=8.27)> shell.exec(file.path(getwd(), "IntentoEnesimo.pdf")) > > Como podéis comprobar, el título "Axis break test" aparece en la pantalla gráfica, pero no en el pdf. Ésto es así porque lo escribo con text(). Si retiro la línea text(4, 11,"Axis break test") y cambio plot(3:10) por plot(3:10, main="Axis break test") sí que aparece en el pdf. Es lógico: forma parte del plot, y se tiene en cuenta al "expandir" el plot para su volcado en pdf. Pero sucede que necesito lograr un correcto funcionamiento para este caso (fuera del plot, con text()), porque debo dar cobertura a gráficos que llevan "información" (texto, líneas emulando eje horizonal superior, etc.) fuera del plot pero anexa a éste. No sé si me explico...> > ¿Se os ocurre alguna forma?. He probado utilizando layout y tampoco lo consigo. Es como si el plot adquiriese el protagonismo total yabsoluto para el dev.copy2pdf.> > Gracias. > > Eva > > P.D.: Debo descartar alternativas tales como el uso del paquete qqplot2 (no lo podría compatibilizar con funciones que tengo que usar necesariamente dentro de la región del plot), y también descarto hacer pdf() y dev.off().> > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org> https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Daniel -- Daniel [[alternative HTML version deleted]]
Eva Prieto Castro
2013-Feb-26 16:00 UTC
[R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible
Hola! Creo que ya sé cómo puedo hacer: coloco 3 plot (el central es el que va a tener los ejes visibles; los otros dos plots los voy a destinar a información complementaria; será texto en el caso del plot superior y tabla con título en el caso del plot inferior). De ese modo consigo que el dev.copy2plot expanda todo. A continuación pongo un ejemplo básico, pero lo que no sé es cómo conseguir ajustar la altura de cada plot, porque ponga el ylim que ponga, los hace iguales, como podéis comprobar al ejecutar ésto: library(plotrix) graphics.off() windows(width=8.27, height=11.69) par(mfrow=c(3,1), mar=c(2, 2, 2, 1.5), oma=c(1, 1, 2, 0)) plot(1:2, ylim=c(1,2)) plot(1:3, ylim=c(1,20)) plot(1:4, ylim=c(1,3)) mtext("Plot of a vs a",side=3,outer=TRUE) dev.copy2pdf(file="MeVarios.pdf",height=11.69, width=8.27) shell.exec(file.path(getwd(), "MeVarios.pdf")) A ver si me podéis iluminar. Gracias. Eva --- El mar, 26/2/13, Eva Prieto Castro <evapcastro@yahoo.es> escribió: De: Eva Prieto Castro <evapcastro@yahoo.es> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "daniel" <daniel319@gmail.com> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 16:09 Hola de nuevo, Volviendo sobre el mismo problema que comentaba esta mañana, me pregunto si es posible crear una especie de plot imaginario (sin ejes visualizados ni labels ni nada) que ocupe todo la pantalla gráfica, y dentro de él meter todo lo que me interese (mi plot, mis text(), mi tabla, etc.). Sería un modo de engañar al dev.copy2pdf, que supuestamente expandiría el plot imaginario, y entonces por extensión quedaría expandido todo lo que haya dibujado en su interior. A lo mejor es muy descabellado, pero por si acaso prefiero consultaros... Gracias. Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 15:50 Eva, Respecto del primer mensaje lo que hice fue calcular el 70% del alto y el ancho (arbitrario para que ingresara al área el texto superior), puede ser que la proporción correcta sea diferente, cuestión de ajustar hasta que conforme. No veo problemas para que esto lo incluyas en una función al fin y al cabo esas proporciones deberían mantenerse en la medida que los textos que pongas por fuera del área del plot no sean muy diferentes. Respecto del segundo mensaje, abrí el IntentoEnesimo.pdf en mi Adobe Reader 9 Versión 9.2.0.124 en una sesión de Windows XP, lo mandé a la impresora e imprimió todo. Para la impresión desde el Adobe Reader elegí como escala de página tanto "Ninguno" (supongo deriva al tamaño de la página que esta configurada como A4) como "Ajustar a área de Impresión". Los resultados como es de esperar son diferentes en cuanto a los márgenes pero en ambos casos a mi me imprimió todo. Daniel Merino El 26 de febrero de 2013 09:47, Eva Prieto Castro <evapcastro@yahoo.es> escribió: Daniel, así funciona, al menos el ejemplo básico que os reporté. Pero no entiendo el porqué; ¿cómo calculaste eso?. El método que elija como definitivo tengo que generalizarlo; es decir, ponerlo como función. ¿Qué criterio debo utilizar entonces?. Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 13:28 Eva por que no mantienes las proporciones del área del plot respecto del tamaño de la hoja, no se si serán las mejores proporciones en tu ejemplo, es cuestión de probar, pero algo así: dev.copy2pdf(file="IntentoEnesimo.pdf",height=8.18, width=5.79) Daniel Merino El día 26 de febrero de 2013 07:11, Eva Prieto Castro <evapcastro@yahoo.es> escribió:> > Buenos días: > > Sigo cabezudeando con el tema de los gráficos; a ver si a alguien se le ocurre alguna idea...> > Supongamos este código: > > library(plotrix) > graphics.off() > windows(width=8.27, height=11.69) > > plot(3:10) > #plot(3:10, main="Axis break test") > par(xpd=TRUE)> text(4, 11,"Axis break test") > axis.break() > axis.break(2,2.9,style="zigzag") > mtext("Texto adicional", side=1, line=2) > text(4, 9,"Texto") >>dev.copy2pdf(file="IntentoEnesimo.pdf",height=11.69, width=8.27)> shell.exec(file.path(getwd(), "IntentoEnesimo.pdf")) > > Como podéis comprobar, el título "Axis break test" aparece en la pantalla gráfica, pero no en el pdf. Ésto es así porque lo escribo con text(). Si retiro la línea text(4, 11,"Axis break test") y cambio plot(3:10) por plot(3:10, main="Axis break test") sí que aparece en el pdf. Es lógico: forma parte del plot, y se tiene en cuenta al "expandir" el plot para su volcado en pdf. Pero sucede que necesito lograr un correcto funcionamiento para este caso (fuera del plot, con text()), porque debo dar cobertura a gráficos que llevan "información" (texto, líneas emulando eje horizonal superior, etc.) fuera del plot pero anexa a éste. No sé si me explico...> > ¿Se os ocurre alguna forma?. He probado utilizando layout y tampoco lo consigo. Es como si el plot adquiriese el protagonismo total yabsoluto para el dev.copy2pdf.> > Gracias. > > Eva > > P.D.: Debo descartar alternativas tales como el uso del paquete qqplot2 (no lo podría compatibilizar con funciones que tengo que usar necesariamente dentro de la región del plot), y también descarto hacer pdf() y dev.off().> > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org> https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Daniel -- Daniel [[alternative HTML version deleted]]
Eva, has definido la función layout, aunque creo recordar que no te servía tampoco. windows(width=8.27, height=11.69) layout(matrix(c(1,1,1,2,2,2,3,3,3), 3, 3, byrow = TRUE), heights = c(1, 3,1)) plot(1:2, ylim=c(1,2)) plot(1:3, ylim=c(1,20)) text( 2, 10, "ABC") mtext("Plot of b vs b",side=1, line=2) plot(1:4, ylim=c(1,3)) mtext("Plot of a vs a",side=3, line=2) Daniel Merino El 26 de febrero de 2013 13:00, Eva Prieto Castro <evapcastro@yahoo.es>escribió:> Hola! > > Creo que ya sé cómo puedo hacer: coloco 3 plot (el central es el que va a > tener los ejes visibles; los otros dos plots los voy a destinar a > información complementaria; será texto en el caso del plot superior y tabla > con título en el caso del plot inferior). De ese modo consigo que el > dev.copy2plot expanda todo. > > A continuación pongo un ejemplo básico, pero lo que no sé es cómo > conseguir ajustar la altura de cada plot, porque ponga el ylim que ponga, > los hace iguales, como podéis comprobar al ejecutar ésto: > > library(plotrix) > > graphics.off() > > windows(width=8.27, height=11.69) > > > par(mfrow=c(3,1), mar=c(2, 2, 2, 1.5), oma=c(1, 1, 2, 0)) > plot(1:2, ylim=c(1,2)) > plot(1:3, ylim=c(1,20)) > plot(1:4, ylim=c(1,3)) > mtext("Plot of a vs a",side=3,outer=TRUE) > dev.copy2pdf(file="MeVarios.pdf",height=11.69, width=8.27) > > shell.exec(file.path(getwd(), "MeVarios.pdf")) > > > A ver si me podéis iluminar. > > > Gracias. > > Eva > --- El *mar, 26/2/13, Eva Prieto Castro <evapcastro@yahoo.es>* escribió: > > > De: Eva Prieto Castro <evapcastro@yahoo.es> > > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "daniel" <daniel319@gmail.com> > CC: r-help-es@r-project.org > Fecha: martes, 26 de febrero, 2013 16:09 > > > > Hola de nuevo, > > Volviendo sobre el mismo problema que comentaba esta mañana, me pregunto > si es posible crear una especie de plot imaginario (sin ejes visualizados > ni labels ni nada) que ocupe todo la pantalla gráfica, y dentro de él meter > todo lo que me interese (mi plot, mis text(), mi tabla, etc.). Sería un > modo de engañar al dev.copy2pdf, que supuestamente expandiría el plot > imaginario, y entonces por extensión quedaría expandido todo lo que haya > dibujado en su interior. > > A lo mejor es muy descabellado, pero por si acaso prefiero consultaros... > > Gracias. > > Eva > --- El *mar, 26/2/13, daniel <daniel319@gmail.com>* escribió: > > > De: daniel <daniel319@gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro@yahoo.es> > CC: r-help-es@r-project.org > Fecha: martes, 26 de febrero, 2013 15:50 > > Eva, > > Respecto del primer mensaje lo que hice fue calcular el 70% del alto y el > ancho (arbitrario para que ingresara al área el texto superior), puede ser > que la proporción correcta sea diferente, cuestión de ajustar hasta que > conforme. No veo problemas para que esto lo incluyas en una función al fin > y al cabo esas proporciones deberían mantenerse en la medida que los textos > que pongas por fuera del área del plot no sean muy diferentes. > > Respecto del segundo mensaje, abrí el IntentoEnesimo.pdf en mi Adobe > Reader 9 Versión 9.2.0.124 en una sesión de Windows XP, lo mandé a la > impresora e imprimió todo. Para la impresión desde el Adobe Reader elegí > como escala de página tanto "Ninguno" (supongo deriva al tamaño de la > página que esta configurada como A4) como "Ajustar a área de Impresión". > Los resultados como es de esperar son diferentes en cuanto a los márgenes > pero en ambos casos a mi me imprimió todo. > > Daniel Merino > > > > El 26 de febrero de 2013 09:47, Eva Prieto Castro <evapcastro@yahoo.es>escribió: > > > Daniel, así funciona, al menos el ejemplo básico que os reporté. Pero no > entiendo el porqué; ¿cómo calculaste eso?. > > El método que elija como definitivo tengo que generalizarlo; es decir, > ponerlo como función. ¿Qué criterio debo utilizar entonces?. > > Eva > --- El *mar, 26/2/13, daniel <daniel319@gmail.com>* escribió: > > > De: daniel <daniel319@gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro@yahoo.es> > CC: r-help-es@r-project.org > Fecha: martes, 26 de febrero, 2013 13:28 > > > Eva por que no mantienes las proporciones del área del plot respecto > del tamaño de la hoja, no se si serán las mejores proporciones en tu > ejemplo, es cuestión de probar, pero algo así: > > dev.copy2pdf(file="IntentoEnesimo.pdf",height=8.18, width=5.79) > > Daniel Merino > > > El día 26 de febrero de 2013 07:11, Eva Prieto Castro > <evapcastro@yahoo.es <http://mc/compose?to=evapcastro@yahoo.es>> escribió: > > > > Buenos días: > > > > Sigo cabezudeando con el tema de los gráficos; a ver si a alguien se le > ocurre alguna idea... > > > > Supongamos este código: > > > > library(plotrix) > > graphics.off() > > windows(width=8.27, height=11.69) > > > > plot(3:10) > > #plot(3:10, main="Axis break test") > > par(xpd=TRUE) > > text(4, 11,"Axis break test") > > axis.break() > > axis.break(2,2.9,style="zigzag") > > mtext("Texto adicional", side=1, line=2) > > text(4, 9,"Texto") > > > > dev.copy2pdf(file="IntentoEnesimo.pdf",height=11.69, width=8.27) > > shell.exec(file.path(getwd(), "IntentoEnesimo.pdf")) > > > > Como podéis comprobar, el título "Axis break test" aparece en la > pantalla gráfica, pero no en el pdf. Ésto es así porque lo escribo con > text(). Si retiro la línea text(4, 11,"Axis break test") y cambio > plot(3:10) por plot(3:10, main="Axis break test") sí que aparece en el pdf. > Es lógico: forma parte del plot, y se tiene en cuenta al "expandir" el plot > para su volcado en pdf. Pero sucede que necesito lograr un correcto > funcionamiento para este caso (fuera del plot, con text()), porque debo dar > cobertura a gráficos que llevan "información" (texto, líneas emulando eje > horizonal superior, etc.) fuera del plot pero anexa a éste. No sé si me > explico... > > > > ¿Se os ocurre alguna forma?. He probado utilizando layout y tampoco lo > consigo. Es como si el plot adquiriese el protagonismo total y absoluto > para el dev.copy2pdf. > > > > Gracias. > > > > Eva > > > > P.D.: Debo descartar alternativas tales como el uso del paquete qqplot2 > (no lo podría compatibilizar con funciones que tengo que usar > necesariamente dentro de la región del plot), y también descarto hacer > pdf() y dev.off(). > > > > > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org <http://mc/compose?to=R-help-es@r-project.org> > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > > -- > Daniel > > > > > -- > Daniel > >-- Daniel [[alternative HTML version deleted]]
Eva Prieto Castro
2013-Feb-26 16:51 UTC
[R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible
Carlos, a mí ese código me retorna el error de plot.new() "márgenes de figura muy grandes". No entiendo por qué... --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 17:37 Eva, has definido la función layout, aunque creo recordar que no te servía tampoco. windows(width=8.27, height=11.69)layout(matrix(c(1,1,1,2,2,2,3,3,3), 3, 3, byrow = TRUE), heights = c(1, 3,1)) plot(1:2, ylim=c(1,2))plot(1:3, ylim=c(1,20))text( 2, 10, "ABC")mtext("Plot of b vs b",side=1, line=2)plot(1:4, ylim=c(1,3))mtext("Plot of a vs a",side=3, line=2) Daniel Merino El 26 de febrero de 2013 13:00, Eva Prieto Castro <evapcastro@yahoo.es> escribió: Hola! Creo que ya sé cómo puedo hacer: coloco 3 plot (el central es el que va a tener los ejes visibles; los otros dos plots los voy a destinar a información complementaria; será texto en el caso del plot superior y tabla con título en el caso del plot inferior). De ese modo consigo que el dev.copy2plot expanda todo. A continuación pongo un ejemplo básico, pero lo que no sé es cómo conseguir ajustar la altura de cada plot, porque ponga el ylim que ponga, los hace iguales, como podéis comprobar al ejecutar ésto: library(plotrix) graphics.off() windows(width=8.27, height=11.69) par(mfrow=c(3,1), mar=c(2, 2, 2, 1.5), oma=c(1, 1, 2, 0)) plot(1:2, ylim=c(1,2)) plot(1:3, ylim=c(1,20)) plot(1:4, ylim=c(1,3)) mtext("Plot of a vs a",side=3,outer=TRUE) dev.copy2pdf(file="MeVarios.pdf",height=11.69, width=8.27) shell.exec(file.path(getwd(), "MeVarios.pdf")) A ver si me podéis iluminar. Gracias. Eva --- El mar, 26/2/13, Eva Prieto Castro <evapcastro@yahoo.es> escribió: De: Eva Prieto Castro <evapcastro@yahoo.es> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "daniel" <daniel319@gmail.com> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 16:09 Hola de nuevo, Volviendo sobre el mismo problema que comentaba esta mañana, me pregunto si es posible crear una especie de plot imaginario (sin ejes visualizados ni labels ni nada) que ocupe todo la pantalla gráfica, y dentro de él meter todo lo que me interese (mi plot, mis text(), mi tabla, etc.). Sería un modo de engañar al dev.copy2pdf, que supuestamente expandiría el plot imaginario, y entonces por extensión quedaría expandido todo lo que haya dibujado en su interior. A lo mejor es muy descabellado, pero por si acaso prefiero consultaros... Gracias. Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 15:50 Eva, Respecto del primer mensaje lo que hice fue calcular el 70% del alto y el ancho (arbitrario para que ingresara al área el texto superior), puede ser que la proporción correcta sea diferente, cuestión de ajustar hasta que conforme. No veo problemas para que esto lo incluyas en una función al fin y al cabo esas proporciones deberían mantenerse en la medida que los textos que pongas por fuera del área del plot no sean muy diferentes. Respecto del segundo mensaje, abrí el IntentoEnesimo.pdf en mi Adobe Reader 9 Versión 9.2.0.124 en una sesión de Windows XP, lo mandé a la impresora e imprimió todo. Para la impresión desde el Adobe Reader elegí como escala de página tanto "Ninguno" (supongo deriva al tamaño de la página que esta configurada como A4) como "Ajustar a área de Impresión". Los resultados como es de esperar son diferentes en cuanto a los márgenes pero en ambos casos a mi me imprimió todo. Daniel Merino El 26 de febrero de 2013 09:47, Eva Prieto Castro <evapcastro@yahoo.es> escribió: Daniel, así funciona, al menos el ejemplo básico que os reporté. Pero no entiendo el porqué; ¿cómo calculaste eso?. El método que elija como definitivo tengo que generalizarlo; es decir, ponerlo como función. ¿Qué criterio debo utilizar entonces?. Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 13:28 Eva por que no mantienes las proporciones del área del plot respecto del tamaño de la hoja, no se si serán las mejores proporciones en tu ejemplo, es cuestión de probar, pero algo así: dev.copy2pdf(file="IntentoEnesimo.pdf",height=8.18, width=5.79) Daniel Merino El día 26 de febrero de 2013 07:11, Eva Prieto Castro <evapcastro@yahoo.es> escribió:> > Buenos días: > > Sigo cabezudeando con el tema de los gráficos; a ver si a alguien se le ocurre alguna idea...> > Supongamos este código: > > library(plotrix) > graphics.off() > windows(width=8.27, height=11.69) > > plot(3:10) > #plot(3:10, main="Axis break test") > par(xpd=TRUE)> text(4, 11,"Axis break test") > axis.break() > axis.break(2,2.9,style="zigzag") > mtext("Texto adicional", side=1, line=2) > text(4, 9,"Texto") >>dev.copy2pdf(file="IntentoEnesimo.pdf",height=11.69, width=8.27)> shell.exec(file.path(getwd(), "IntentoEnesimo.pdf")) > > Como podéis comprobar, el título "Axis break test" aparece en la pantalla gráfica, pero no en el pdf. Ésto es así porque lo escribo con text(). Si retiro la línea text(4, 11,"Axis break test") y cambio plot(3:10) por plot(3:10, main="Axis break test") sí que aparece en el pdf. Es lógico: forma parte del plot, y se tiene en cuenta al "expandir" el plot para su volcado en pdf. Pero sucede que necesito lograr un correcto funcionamiento para este caso (fuera del plot, con text()), porque debo dar cobertura a gráficos que llevan "información" (texto, líneas emulando eje horizonal superior, etc.) fuera del plot pero anexa a éste. No sé si me explico...> > ¿Se os ocurre alguna forma?. He probado utilizando layout y tampoco lo consigo. Es como si el plot adquiriese el protagonismo total yabsoluto para el dev.copy2pdf.> > Gracias. > > Eva > > P.D.: Debo descartar alternativas tales como el uso del paquete qqplot2 (no lo podría compatibilizar con funciones que tengo que usar necesariamente dentro de la región del plot), y también descarto hacer pdf() y dev.off().> > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org> https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Daniel -- Daniel -- Daniel [[alternative HTML version deleted]]
Eva Prieto Castro
2013-Feb-26 16:58 UTC
[R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible
Daniel, ¿no hay manera de determinar un height (o equivalente) para los plot sin usar layout?. En caso de que lo haya, ¿cómo se establece sobre qué plot voy a pintar/escribir?. Gracias Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 17:37 Eva, has definido la función layout, aunque creo recordar que no te servía tampoco. windows(width=8.27, height=11.69)layout(matrix(c(1,1,1,2,2,2,3,3,3), 3, 3, byrow = TRUE), heights = c(1, 3,1)) plot(1:2, ylim=c(1,2))plot(1:3, ylim=c(1,20))text( 2, 10, "ABC")mtext("Plot of b vs b",side=1, line=2)plot(1:4, ylim=c(1,3))mtext("Plot of a vs a",side=3, line=2) Daniel Merino El 26 de febrero de 2013 13:00, Eva Prieto Castro <evapcastro@yahoo.es> escribió: Hola! Creo que ya sé cómo puedo hacer: coloco 3 plot (el central es el que va a tener los ejes visibles; los otros dos plots los voy a destinar a información complementaria; será texto en el caso del plot superior y tabla con título en el caso del plot inferior). De ese modo consigo que el dev.copy2plot expanda todo. A continuación pongo un ejemplo básico, pero lo que no sé es cómo conseguir ajustar la altura de cada plot, porque ponga el ylim que ponga, los hace iguales, como podéis comprobar al ejecutar ésto: library(plotrix) graphics.off() windows(width=8.27, height=11.69) par(mfrow=c(3,1), mar=c(2, 2, 2, 1.5), oma=c(1, 1, 2, 0)) plot(1:2, ylim=c(1,2)) plot(1:3, ylim=c(1,20)) plot(1:4, ylim=c(1,3)) mtext("Plot of a vs a",side=3,outer=TRUE) dev.copy2pdf(file="MeVarios.pdf",height=11.69, width=8.27) shell.exec(file.path(getwd(), "MeVarios.pdf")) A ver si me podéis iluminar. Gracias. Eva --- El mar, 26/2/13, Eva Prieto Castro <evapcastro@yahoo.es> escribió: De: Eva Prieto Castro <evapcastro@yahoo.es> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "daniel" <daniel319@gmail.com> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 16:09 Hola de nuevo, Volviendo sobre el mismo problema que comentaba esta mañana, me pregunto si es posible crear una especie de plot imaginario (sin ejes visualizados ni labels ni nada) que ocupe todo la pantalla gráfica, y dentro de él meter todo lo que me interese (mi plot, mis text(), mi tabla, etc.). Sería un modo de engañar al dev.copy2pdf, que supuestamente expandiría el plot imaginario, y entonces por extensión quedaría expandido todo lo que haya dibujado en su interior. A lo mejor es muy descabellado, pero por si acaso prefiero consultaros... Gracias. Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 15:50 Eva, Respecto del primer mensaje lo que hice fue calcular el 70% del alto y el ancho (arbitrario para que ingresara al área el texto superior), puede ser que la proporción correcta sea diferente, cuestión de ajustar hasta que conforme. No veo problemas para que esto lo incluyas en una función al fin y al cabo esas proporciones deberían mantenerse en la medida que los textos que pongas por fuera del área del plot no sean muy diferentes. Respecto del segundo mensaje, abrí el IntentoEnesimo.pdf en mi Adobe Reader 9 Versión 9.2.0.124 en una sesión de Windows XP, lo mandé a la impresora e imprimió todo. Para la impresión desde el Adobe Reader elegí como escala de página tanto "Ninguno" (supongo deriva al tamaño de la página que esta configurada como A4) como "Ajustar a área de Impresión". Los resultados como es de esperar son diferentes en cuanto a los márgenes pero en ambos casos a mi me imprimió todo. Daniel Merino El 26 de febrero de 2013 09:47, Eva Prieto Castro <evapcastro@yahoo.es> escribió: Daniel, así funciona, al menos el ejemplo básico que os reporté. Pero no entiendo el porqué; ¿cómo calculaste eso?. El método que elija como definitivo tengo que generalizarlo; es decir, ponerlo como función. ¿Qué criterio debo utilizar entonces?. Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 13:28 Eva por que no mantienes las proporciones del área del plot respecto del tamaño de la hoja, no se si serán las mejores proporciones en tu ejemplo, es cuestión de probar, pero algo así: dev.copy2pdf(file="IntentoEnesimo.pdf",height=8.18, width=5.79) Daniel Merino El día 26 de febrero de 2013 07:11, Eva Prieto Castro <evapcastro@yahoo.es> escribió:> > Buenos días: > > Sigo cabezudeando con el tema de los gráficos; a ver si a alguien se le ocurre alguna idea...> > Supongamos este código: > > library(plotrix) > graphics.off() > windows(width=8.27, height=11.69) > > plot(3:10) > #plot(3:10, main="Axis break test") > par(xpd=TRUE)> text(4, 11,"Axis break test") > axis.break() > axis.break(2,2.9,style="zigzag") > mtext("Texto adicional", side=1, line=2) > text(4, 9,"Texto") >>dev.copy2pdf(file="IntentoEnesimo.pdf",height=11.69, width=8.27)> shell.exec(file.path(getwd(), "IntentoEnesimo.pdf")) > > Como podéis comprobar, el título "Axis break test" aparece en la pantalla gráfica, pero no en el pdf. Ésto es así porque lo escribo con text(). Si retiro la línea text(4, 11,"Axis break test") y cambio plot(3:10) por plot(3:10, main="Axis break test") sí que aparece en el pdf. Es lógico: forma parte del plot, y se tiene en cuenta al "expandir" el plot para su volcado en pdf. Pero sucede que necesito lograr un correcto funcionamiento para este caso (fuera del plot, con text()), porque debo dar cobertura a gráficos que llevan "información" (texto, líneas emulando eje horizonal superior, etc.) fuera del plot pero anexa a éste. No sé si me explico...> > ¿Se os ocurre alguna forma?. He probado utilizando layout y tampoco lo consigo. Es como si el plot adquiriese el protagonismo total yabsoluto para el dev.copy2pdf.> > Gracias. > > Eva > > P.D.: Debo descartar alternativas tales como el uso del paquete qqplot2 (no lo podría compatibilizar con funciones que tengo que usar necesariamente dentro de la región del plot), y también descarto hacer pdf() y dev.off().> > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org> https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Daniel -- Daniel -- Daniel [[alternative HTML version deleted]]
Eva, Revisa los paquetes grid y gridExtra que tienen sus propias versiones de layout. Daniel Merino El 26 de febrero de 2013 13:58, Eva Prieto Castro <evapcastro@yahoo.es>escribió:> > Daniel, ¿no hay manera de determinar un height (o equivalente) para los > plot sin usar layout?. En caso de que lo haya, ¿cómo se establece sobre qué > plot voy a pintar/escribir?. > > Gracias > > > Eva > > --- El *mar, 26/2/13, daniel <daniel319@gmail.com>* escribió: > > > De: daniel <daniel319@gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro@yahoo.es> > CC: r-help-es@r-project.org > Fecha: martes, 26 de febrero, 2013 17:37 > > > Eva, has definido la función layout, aunque creo recordar que no te servía > tampoco. > > windows(width=8.27, height=11.69) > layout(matrix(c(1,1,1,2,2,2,3,3,3), 3, 3, byrow = TRUE), heights = c(1, > 3,1)) > plot(1:2, ylim=c(1,2)) > plot(1:3, ylim=c(1,20)) > text( 2, 10, "ABC") > mtext("Plot of b vs b",side=1, line=2) > plot(1:4, ylim=c(1,3)) > mtext("Plot of a vs a",side=3, line=2) > > > Daniel Merino > > El 26 de febrero de 2013 13:00, Eva Prieto Castro <evapcastro@yahoo.es<http://mc/compose?to=evapcastro@yahoo.es> > > escribió: > > Hola! > > Creo que ya sé cómo puedo hacer: coloco 3 plot (el central es el que va a > tener los ejes visibles; los otros dos plots los voy a destinar a > información complementaria; será texto en el caso del plot superior y tabla > con título en el caso del plot inferior). De ese modo consigo que el > dev.copy2plot expanda todo. > > A continuación pongo un ejemplo básico, pero lo que no sé es cómo > conseguir ajustar la altura de cada plot, porque ponga el ylim que ponga, > los hace iguales, como podéis comprobar al ejecutar ésto: > > library(plotrix) > > graphics.off() > > windows(width=8.27, height=11.69) > > > par(mfrow=c(3,1), mar=c(2, 2, 2, 1.5), oma=c(1, 1, 2, 0)) > plot(1:2, ylim=c(1,2)) > plot(1:3, ylim=c(1,20)) > plot(1:4, ylim=c(1,3)) > mtext("Plot of a vs a",side=3,outer=TRUE) > dev.copy2pdf(file="MeVarios.pdf",height=11.69, width=8.27) > > shell.exec(file.path(getwd(), "MeVarios.pdf")) > > > A ver si me podéis iluminar. > > > Gracias. > > Eva > --- El *mar, 26/2/13, Eva Prieto Castro <evapcastro@yahoo.es<http://mc/compose?to=evapcastro@yahoo.es> > >* escribió: > > > De: Eva Prieto Castro <evapcastro@yahoo.es<http://mc/compose?to=evapcastro@yahoo.es> > > > > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "daniel" <daniel319@gmail.com<http://mc/compose?to=daniel319@gmail.com> > > > CC: r-help-es@r-project.org <http://mc/compose?to=r-help-es@r-project.org> > Fecha: martes, 26 de febrero, 2013 16:09 > > > > Hola de nuevo, > > Volviendo sobre el mismo problema que comentaba esta mañana, me pregunto > si es posible crear una especie de plot imaginario (sin ejes visualizados > ni labels ni nada) que ocupe todo la pantalla gráfica, y dentro de él meter > todo lo que me interese (mi plot, mis text(), mi tabla, etc.). Sería un > modo de engañar al dev.copy2pdf, que supuestamente expandiría el plot > imaginario, y entonces por extensión quedaría expandido todo lo que haya > dibujado en su interior. > > A lo mejor es muy descabellado, pero por si acaso prefiero consultaros... > > Gracias. > > Eva > --- El *mar, 26/2/13, daniel <daniel319@gmail.com<http://mc/compose?to=daniel319@gmail.com> > >* escribió: > > > De: daniel <daniel319@gmail.com <http://mc/compose?to=daniel319@gmail.com> > > > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro@yahoo.es<http://mc/compose?to=evapcastro@yahoo.es> > > > CC: r-help-es@r-project.org <http://mc/compose?to=r-help-es@r-project.org> > Fecha: martes, 26 de febrero, 2013 15:50 > > Eva, > > Respecto del primer mensaje lo que hice fue calcular el 70% del alto y el > ancho (arbitrario para que ingresara al área el texto superior), puede ser > que la proporción correcta sea diferente, cuestión de ajustar hasta que > conforme. No veo problemas para que esto lo incluyas en una función al fin > y al cabo esas proporciones deberían mantenerse en la medida que los textos > que pongas por fuera del área del plot no sean muy diferentes. > > Respecto del segundo mensaje, abrí el IntentoEnesimo.pdf en mi Adobe > Reader 9 Versión 9.2.0.124 en una sesión de Windows XP, lo mandé a la > impresora e imprimió todo. Para la impresión desde el Adobe Reader elegí > como escala de página tanto "Ninguno" (supongo deriva al tamaño de la > página que esta configurada como A4) como "Ajustar a área de Impresión". > Los resultados como es de esperar son diferentes en cuanto a los márgenes > pero en ambos casos a mi me imprimió todo. > > Daniel Merino > > > > El 26 de febrero de 2013 09:47, Eva Prieto Castro <evapcastro@yahoo.es>escribió: > > > Daniel, así funciona, al menos el ejemplo básico que os reporté. Pero no > entiendo el porqué; ¿cómo calculaste eso?. > > El método que elija como definitivo tengo que generalizarlo; es decir, > ponerlo como función. ¿Qué criterio debo utilizar entonces?. > > Eva > --- El *mar, 26/2/13, daniel <daniel319@gmail.com>* escribió: > > > De: daniel <daniel319@gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro@yahoo.es> > CC: r-help-es@r-project.org > Fecha: martes, 26 de febrero, 2013 13:28 > > > Eva por que no mantienes las proporciones del área del plot respecto > del tamaño de la hoja, no se si serán las mejores proporciones en tu > ejemplo, es cuestión de probar, pero algo así: > > dev.copy2pdf(file="IntentoEnesimo.pdf",height=8.18, width=5.79) > > Daniel Merino > > > El día 26 de febrero de 2013 07:11, Eva Prieto Castro > <evapcastro@yahoo.es <http://mc/compose?to=evapcastro@yahoo.es>> escribió: > > > > Buenos días: > > > > Sigo cabezudeando con el tema de los gráficos; a ver si a alguien se le > ocurre alguna idea... > > > > Supongamos este código: > > > > library(plotrix) > > graphics.off() > > windows(width=8.27, height=11.69) > > > > plot(3:10) > > #plot(3:10, main="Axis break test") > > par(xpd=TRUE) > > text(4, 11,"Axis break test") > > axis.break() > > axis.break(2,2.9,style="zigzag") > > mtext("Texto adicional", side=1, line=2) > > text(4, 9,"Texto") > > > > dev.copy2pdf(file="IntentoEnesimo.pdf",height=11.69, width=8.27) > > shell.exec(file.path(getwd(), "IntentoEnesimo.pdf")) > > > > Como podéis comprobar, el título "Axis break test" aparece en la > pantalla gráfica, pero no en el pdf. Ésto es así porque lo escribo con > text(). Si retiro la línea text(4, 11,"Axis break test") y cambio > plot(3:10) por plot(3:10, main="Axis break test") sí que aparece en el pdf. > Es lógico: forma parte del plot, y se tiene en cuenta al "expandir" el plot > para su volcado en pdf. Pero sucede que necesito lograr un correcto > funcionamiento para este caso (fuera del plot, con text()), porque debo dar > cobertura a gráficos que llevan "información" (texto, líneas emulando eje > horizonal superior, etc.) fuera del plot pero anexa a éste. No sé si me > explico... > > > > ¿Se os ocurre alguna forma?. He probado utilizando layout y tampoco lo > consigo. Es como si el plot adquiriese el protagonismo total y absoluto > para el dev.copy2pdf. > > > > Gracias. > > > > Eva > > > > P.D.: Debo descartar alternativas tales como el uso del paquete qqplot2 > (no lo podría compatibilizar con funciones que tengo que usar > necesariamente dentro de la región del plot), y también descarto hacer > pdf() y dev.off(). > > > > > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org <http://mc/compose?to=R-help-es@r-project.org> > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > > -- > Daniel > > > > > -- > Daniel > > > > > -- > Daniel > >-- Daniel [[alternative HTML version deleted]]
Eva Prieto Castro
2013-Feb-26 19:02 UTC
[R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible
Hola de nuevo: Un buen punto de partida para mí sería ésto: x <- 1:10 a <- runif(10, 0, 5) b <- runif(10, 0, 5) c <- runif(10, 0, 5) ylim <- c(0, 5) par(mfrow=c(3,1)) par(mar=c(0,4.1,2.1,3.1)) #par(mfrow=c(3,1), mar=c(0,4,0,2)+0.1, oma=c(5,0,3,0)+0.1 ) plot(x, a, type="o", ylim=ylim, axes=FALSE) axis(1, labels=FALSE) axis(2) axis(3) axis(4) box() par(mar=c(0,4.1,0,3.1)) plot(x, b, type="o", ylim=ylim, axes=FALSE) axis(1, labels=FALSE) axis(2) axis(3, labels=FALSE) axis(4) box() par(mar=c(2.1,4.1,0,3.1)) plot(x, c, type="o", ylim=ylim, axes=FALSE) axis(1) axis(2) axis(3, labels=FALSE) axis(4) box() El plot central lo utilizaría para la gráfica propiamente dicha, y los otros dos los pondría sin ejes visibles, para mostrar texto y tabla de resultados, así como franjas colindantes con los ejes horizontales del plot central. El problema es que no consigo manejar el height de esos plot. Necesito que el central tenga una proporción de 4 a 1 respecto a los otros dos. Daniel, si lo hago con layout no consigo que me queden así solapados. ¿Se os ocurre algo?. Gracias. Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 18:26 Eva, Revisa los paquetes grid y gridExtra que tienen sus propias versiones de layout. Daniel Merino El 26 de febrero de 2013 13:58, Eva Prieto Castro <evapcastro@yahoo.es> escribió: Daniel, ¿no hay manera de determinar un height (o equivalente) para los plot sin usar layout?. En caso de que lo haya, ¿cómo se establece sobre qué plot voy a pintar/escribir?. Gracias Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 17:37 Eva, has definido la función layout, aunque creo recordar que no te servía tampoco. windows(width=8.27, height=11.69)layout(matrix(c(1,1,1,2,2,2,3,3,3), 3, 3, byrow = TRUE), heights = c(1, 3,1)) plot(1:2, ylim=c(1,2))plot(1:3, ylim=c(1,20))text( 2, 10, "ABC")mtext("Plot of b vs b",side=1, line=2)plot(1:4, ylim=c(1,3))mtext("Plot of a vs a",side=3, line=2) Daniel Merino El 26 de febrero de 2013 13:00, Eva Prieto Castro <evapcastro@yahoo.es> escribió: Hola! Creo que ya sé cómo puedo hacer: coloco 3 plot (el central es el que va a tener los ejes visibles; los otros dos plots los voy a destinar a información complementaria; será texto en el caso del plot superior y tabla con título en el caso del plot inferior). De ese modo consigo que el dev.copy2plot expanda todo. A continuación pongo un ejemplo básico, pero lo que no sé es cómo conseguir ajustar la altura de cada plot, porque ponga el ylim que ponga, los hace iguales, como podéis comprobar al ejecutar ésto: library(plotrix) graphics.off() windows(width=8.27, height=11.69) par(mfrow=c(3,1), mar=c(2, 2, 2, 1.5), oma=c(1, 1, 2, 0)) plot(1:2, ylim=c(1,2)) plot(1:3, ylim=c(1,20)) plot(1:4, ylim=c(1,3)) mtext("Plot of a vs a",side=3,outer=TRUE) dev.copy2pdf(file="MeVarios.pdf",height=11.69, width=8.27) shell.exec(file.path(getwd(), "MeVarios.pdf")) A ver si me podéis iluminar. Gracias. Eva --- El mar, 26/2/13, Eva Prieto Castro <evapcastro@yahoo.es> escribió: De: Eva Prieto Castro <evapcastro@yahoo.es> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "daniel" <daniel319@gmail.com> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 16:09 Hola de nuevo, Volviendo sobre el mismo problema que comentaba esta mañana, me pregunto si es posible crear una especie de plot imaginario (sin ejes visualizados ni labels ni nada) que ocupe todo la pantalla gráfica, y dentro de él meter todo lo que me interese (mi plot, mis text(), mi tabla, etc.). Sería un modo de engañar al dev.copy2pdf, que supuestamente expandiría el plot imaginario, y entonces por extensión quedaría expandido todo lo que haya dibujado en su interior. A lo mejor es muy descabellado, pero por si acaso prefiero consultaros... Gracias. Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 15:50 Eva, Respecto del primer mensaje lo que hice fue calcular el 70% del alto y el ancho (arbitrario para que ingresara al área el texto superior), puede ser que la proporción correcta sea diferente, cuestión de ajustar hasta que conforme. No veo problemas para que esto lo incluyas en una función al fin y al cabo esas proporciones deberían mantenerse en la medida que los textos que pongas por fuera del área del plot no sean muy diferentes. Respecto del segundo mensaje, abrí el IntentoEnesimo.pdf en mi Adobe Reader 9 Versión 9.2.0.124 en una sesión de Windows XP, lo mandé a la impresora e imprimió todo. Para la impresión desde el Adobe Reader elegí como escala de página tanto "Ninguno" (supongo deriva al tamaño de la página que esta configurada como A4) como "Ajustar a área de Impresión". Los resultados como es de esperar son diferentes en cuanto a los márgenes pero en ambos casos a mi me imprimió todo. Daniel Merino El 26 de febrero de 2013 09:47, Eva Prieto Castro <evapcastro@yahoo.es> escribió: Daniel, así funciona, al menos el ejemplo básico que os reporté. Pero no entiendo el porqué; ¿cómo calculaste eso?. El método que elija como definitivo tengo que generalizarlo; es decir, ponerlo como función. ¿Qué criterio debo utilizar entonces?. Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 13:28 Eva por que no mantienes las proporciones del área del plot respecto del tamaño de la hoja, no se si serán las mejores proporciones en tu ejemplo, es cuestión de probar, pero algo así: dev.copy2pdf(file="IntentoEnesimo.pdf",height=8.18, width=5.79) Daniel Merino El día 26 de febrero de 2013 07:11, Eva Prieto Castro <evapcastro@yahoo.es> escribió:> > Buenos días: > > Sigo cabezudeando con el tema de los gráficos; a ver si a alguien se le ocurre alguna idea...> > Supongamos este código: > > library(plotrix) > graphics.off() > windows(width=8.27, height=11.69) > > plot(3:10) > #plot(3:10, main="Axis break test") > par(xpd=TRUE)> text(4, 11,"Axis break test") > axis.break() > axis.break(2,2.9,style="zigzag") > mtext("Texto adicional", side=1, line=2) > text(4, 9,"Texto") >>dev.copy2pdf(file="IntentoEnesimo.pdf",height=11.69, width=8.27)> shell.exec(file.path(getwd(), "IntentoEnesimo.pdf")) > > Como podéis comprobar, el título "Axis break test" aparece en la pantalla gráfica, pero no en el pdf. Ésto es así porque lo escribo con text(). Si retiro la línea text(4, 11,"Axis break test") y cambio plot(3:10) por plot(3:10, main="Axis break test") sí que aparece en el pdf. Es lógico: forma parte del plot, y se tiene en cuenta al "expandir" el plot para su volcado en pdf. Pero sucede que necesito lograr un correcto funcionamiento para este caso (fuera del plot, con text()), porque debo dar cobertura a gráficos que llevan "información" (texto, líneas emulando eje horizonal superior, etc.) fuera del plot pero anexa a éste. No sé si me explico...> > ¿Se os ocurre alguna forma?. He probado utilizando layout y tampoco lo consigo. Es como si el plot adquiriese el protagonismo total yabsoluto para el dev.copy2pdf.> > Gracias. > > Eva > > P.D.: Debo descartar alternativas tales como el uso del paquete qqplot2 (no lo podría compatibilizar con funciones que tengo que usar necesariamente dentro de la región del plot), y también descarto hacer pdf() y dev.off().> > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org> https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Daniel -- Daniel -- Daniel -- Daniel [[alternative HTML version deleted]]
Eva, En tu ejemplo en lugar de par(mfrow=c(3,1)) pon lo siguiente windows(width=8.27, height=11.69) layout(matrix(c(1,1,1,2,2,2,3,3,3), 3, 3, byrow = TRUE), heights = c(1, 4,1)) y fijate si es lo que quieres (quizás sea heights = c(1, 3,1)). Lo anterior se sigue directamente de leer lo que te envié antes. No puede ser que no lo puedas ver por pantalla ya que lo corrí sin problemas ¿? Daniel Merino El 26 de febrero de 2013 16:02, Eva Prieto Castro <evapcastro en yahoo.es> escribió:> > Hola de nuevo: > > Un buen punto de partida para mí sería ésto: > > x <- 1:10 > a <- runif(10, 0, 5) > b <- runif(10, 0, 5) > c <- runif(10, 0, 5) > > ylim <- c(0, 5) > > par(mfrow=c(3,1)) > > par(mar=c(0,4.1,2.1,3.1)) > #par(mfrow=c(3,1), mar=c(0,4,0,2)+0.1, oma=c(5,0,3,0)+0.1 ) > > plot(x, a, type="o", ylim=ylim, axes=FALSE) > axis(1, labels=FALSE) > axis(2) > axis(3) > axis(4) > box() > > par(mar=c(0,4.1,0,3.1)) > > plot(x, b, type="o", ylim=ylim, axes=FALSE) > axis(1, labels=FALSE) > axis(2) > axis(3, labels=FALSE) > axis(4) > box() > > par(mar=c(2.1,4.1,0,3.1)) > > plot(x, c, type="o", ylim=ylim, axes=FALSE) > axis(1) > axis(2) > axis(3, labels=FALSE) > axis(4) > box() > > > El plot central lo utilizaría para la gráfica propiamente dicha, y los otros dos los pondría sin ejes visibles, para mostrar texto y tabla de resultados, así como franjas colindantes con los ejes horizontales del plot central. > > El problema es que no consigo manejar el height de esos plot. Necesito que el central tenga una proporción de 4 a 1 respecto a los otros dos. > > Daniel, si lo hago con layout no consigo que me queden así solapados. > > ¿Se os ocurre algo?. > > > Gracias. > > Eva > > > --- El mar, 26/2/13, daniel <daniel319 en gmail.com> escribió: > > > De: daniel <daniel319 en gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro en yahoo.es> > CC: r-help-es en r-project.org > Fecha: martes, 26 de febrero, 2013 18:26 > > > Eva, > > Revisa los paquetes grid y gridExtra que tienen sus propias versiones de layout. > > Daniel Merino > > El 26 de febrero de 2013 13:58, Eva Prieto Castro <evapcastro en yahoo.es> escribió: > > > Daniel, ¿no hay manera de determinar un height (o equivalente) para los plot sin usar layout?. En caso de que lo haya, ¿cómo se establece sobre qué plot voy a pintar/escribir?. > > Gracias > > > Eva > > --- El mar, 26/2/13, daniel <daniel319 en gmail.com> escribió: > > > De: daniel <daniel319 en gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro en yahoo.es> > CC: r-help-es en r-project.org > Fecha: martes, 26 de febrero, 2013 17:37 > > > Eva, has definido la función layout, aunque creo recordar que no te servía tampoco. > > windows(width=8.27, height=11.69) > layout(matrix(c(1,1,1,2,2,2,3,3,3), 3, 3, byrow = TRUE), heights = c(1, 3,1)) > plot(1:2, ylim=c(1,2)) > plot(1:3, ylim=c(1,20)) > text( 2, 10, "ABC") > mtext("Plot of b vs b",side=1, line=2) > plot(1:4, ylim=c(1,3)) > mtext("Plot of a vs a",side=3, line=2) > > > Daniel Merino > > El 26 de febrero de 2013 13:00, Eva Prieto Castro <evapcastro en yahoo.es> escribió: > > Hola! > > Creo que ya sé cómo puedo hacer: coloco 3 plot (el central es el que va a tener los ejes visibles; los otros dos plots los voy a destinar a información complementaria; será texto en el caso del plot superior y tabla con título en el caso del plot inferior). De ese modo consigo que el dev.copy2plot expanda todo. > > A continuación pongo un ejemplo básico, pero lo que no sé es cómo conseguir ajustar la altura de cada plot, porque ponga el ylim que ponga, los hace iguales, como podéis comprobar al ejecutar ésto: > > library(plotrix) > > graphics.off() > > windows(width=8.27, height=11.69) > > > par(mfrow=c(3,1), mar=c(2, 2, 2, 1.5), oma=c(1, 1, 2, 0)) > plot(1:2, ylim=c(1,2)) > plot(1:3, ylim=c(1,20)) > plot(1:4, ylim=c(1,3)) > mtext("Plot of a vs a",side=3,outer=TRUE) > dev.copy2pdf(file="MeVarios.pdf",height=11.69, width=8.27) > > shell.exec(file.path(getwd(), "MeVarios.pdf")) > > > A ver si me podéis iluminar. > > > Gracias. > > Eva > --- El mar, 26/2/13, Eva Prieto Castro <evapcastro en yahoo.es> escribió: > > > De: Eva Prieto Castro <evapcastro en yahoo.es> > > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "daniel" <daniel319 en gmail.com> > CC: r-help-es en r-project.org > Fecha: martes, 26 de febrero, 2013 16:09 > > > > Hola de nuevo, > > Volviendo sobre el mismo problema que comentaba esta mañana, me pregunto si es posible crear una especie de plot imaginario (sin ejes visualizados ni labels ni nada) que ocupe todo la pantalla gráfica, y dentro de él meter todo lo que me interese (mi plot, mis text(), mi tabla, etc.). Sería un modo de engañar al dev.copy2pdf, que supuestamente expandiría el plot imaginario, y entonces por extensión quedaría expandido todo lo que haya dibujado en su interior. > > A lo mejor es muy descabellado, pero por si acaso prefiero consultaros... > > Gracias. > > Eva > --- El mar, 26/2/13, daniel <daniel319 en gmail.com> escribió: > > > De: daniel <daniel319 en gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro en yahoo.es> > CC: r-help-es en r-project.org > Fecha: martes, 26 de febrero, 2013 15:50 > > Eva, > > Respecto del primer mensaje lo que hice fue calcular el 70% del alto y el ancho (arbitrario para que ingresara al área el texto superior), puede ser que la proporción correcta sea diferente, cuestión de ajustar hasta que conforme. No veo problemas para que esto lo incluyas en una función al fin y al cabo esas proporciones deberían mantenerse en la medida que los textos que pongas por fuera del área del plot no sean muy diferentes. > > Respecto del segundo mensaje, abrí el IntentoEnesimo.pdf en mi Adobe Reader 9 Versión 9.2.0.124 en una sesión de Windows XP, lo mandé a la impresora e imprimió todo. Para la impresión desde el Adobe Reader elegí como escala de página tanto "Ninguno" (supongo deriva al tamaño de la página que esta configurada como A4) como "Ajustar a área de Impresión". Los resultados como es de esperar son diferentes en cuanto a los márgenes pero en ambos casos a mi me imprimió todo. > > Daniel Merino > > > > El 26 de febrero de 2013 09:47, Eva Prieto Castro <evapcastro en yahoo.es> escribió: > > > Daniel, así funciona, al menos el ejemplo básico que os reporté. Pero no entiendo el porqué; ¿cómo calculaste eso?. > > El método que elija como definitivo tengo que generalizarlo; es decir, ponerlo como función. ¿Qué criterio debo utilizar entonces?. > > Eva > --- El mar, 26/2/13, daniel <daniel319 en gmail.com> escribió: > > > De: daniel <daniel319 en gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro en yahoo.es> > CC: r-help-es en r-project.org > Fecha: martes, 26 de febrero, 2013 13:28 > > > Eva por que no mantienes las proporciones del área del plot respecto > del tamaño de la hoja, no se si serán las mejores proporciones en tu > ejemplo, es cuestión de probar, pero algo así: > > dev.copy2pdf(file="IntentoEnesimo.pdf",height=8.18, width=5.79) > > Daniel Merino > > > El día 26 de febrero de 2013 07:11, Eva Prieto Castro > <evapcastro en yahoo.es> escribió: > > > > Buenos días: > > > > Sigo cabezudeando con el tema de los gráficos; a ver si a alguien se le ocurre alguna idea... > > > > Supongamos este código: > > > > library(plotrix) > > graphics.off() > > windows(width=8.27, height=11.69) > > > > plot(3:10) > > #plot(3:10, main="Axis break test") > > par(xpd=TRUE) > > text(4, 11,"Axis break test") > > axis.break() > > axis.break(2,2.9,style="zigzag") > > mtext("Texto adicional", side=1, line=2) > > text(4, 9,"Texto") > > > > dev.copy2pdf(file="IntentoEnesimo.pdf",height=11.69, width=8.27) > > shell.exec(file.path(getwd(), "IntentoEnesimo.pdf")) > > > > Como podéis comprobar, el título "Axis break test" aparece en la pantalla gráfica, pero no en el pdf. Ésto es así porque lo escribo con text(). Si retiro la línea text(4, 11,"Axis break test") y cambio plot(3:10) por plot(3:10, main="Axis break test") sí que aparece en el pdf. Es lógico: forma parte del plot, y se tiene en cuenta al "expandir" el plot para su volcado en pdf. Pero sucede que necesito lograr un correcto funcionamiento para este caso (fuera del plot, con text()), porque debo dar cobertura a gráficos que llevan "información" (texto, líneas emulando eje horizonal superior, etc.) fuera del plot pero anexa a éste. No sé si me explico... > > > > ¿Se os ocurre alguna forma?. He probado utilizando layout y tampoco lo consigo. Es como si el plot adquiriese el protagonismo total y absoluto para el dev.copy2pdf. > > > > Gracias. > > > > Eva > > > > P.D.: Debo descartar alternativas tales como el uso del paquete qqplot2 (no lo podría compatibilizar con funciones que tengo que usar necesariamente dentro de la región del plot), y también descarto hacer pdf() y dev.off(). > > > > > > [[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 > > > > > > -- > Daniel > > > > > -- > Daniel > > > > > -- > Daniel > > > > > -- > Daniel-- Daniel
Eva Prieto Castro
2013-Feb-26 21:58 UTC
[R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible
Gracias, Daniel. No entiendo por qué antes no me funcionó. Este método de los 3 plot''s y usando layout es el camino correcto para atender a mis necesidades (dev.copy2pdf). Ahora que ya sé que funciona sólo me queda adaptar la estructura de triple plot a mi caso concreto. Os lo contaré! Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 21:02 Eva, En tu ejemplo en lugar de par(mfrow=c(3,1)) pon lo siguiente windows(width=8.27, height=11.69) layout(matrix(c(1,1,1,2,2,2,3,3,3), 3, 3, byrow = TRUE), heights = c(1, 4,1)) y fijate si es lo que quieres (quizás sea heights = c(1, 3,1)). Lo anterior se sigue directamente de leer lo que te envié antes. No puede ser que no lo puedas ver por pantalla ya que lo corrí sin problemas ¿? Daniel Merino El 26 de febrero de 2013 16:02, Eva Prieto Castro <evapcastro@yahoo.es> escribió:> > Hola de nuevo: > > Un buen punto de partida para mí sería ésto: > > x <- 1:10 > a <- runif(10, 0, 5) > b <- runif(10, 0, 5) > c <- runif(10, 0, 5) > > ylim <- c(0, 5) > > par(mfrow=c(3,1)) > > par(mar=c(0,4.1,2.1,3.1)) > #par(mfrow=c(3,1), mar=c(0,4,0,2)+0.1, oma=c(5,0,3,0)+0.1 ) > > plot(x, a, type="o", ylim=ylim, axes=FALSE) > axis(1, labels=FALSE) > axis(2) > axis(3) > axis(4) > box() > > par(mar=c(0,4.1,0,3.1)) > > plot(x, b, type="o", ylim=ylim, axes=FALSE) > axis(1, labels=FALSE) > axis(2) > axis(3, labels=FALSE) > axis(4) > box() > > par(mar=c(2.1,4.1,0,3.1)) > > plot(x, c, type="o", ylim=ylim, axes=FALSE) > axis(1) > axis(2) > axis(3, labels=FALSE) > axis(4) > box() > > > El plot central lo utilizaría para la gráfica propiamente dicha, y los otros dos los pondría sin ejes visibles, para mostrar texto y tabla de resultados, así como franjas colindantes con los ejes horizontales del plot central. > > El problema es que no consigo manejar el height de esos plot. Necesito que el central tenga una proporción de 4 a 1 respecto a los otros dos. > > Daniel, si lo hago con layout no consigo que me queden así solapados. > > ¿Se os ocurre algo?. > > > Gracias. > > Eva > > > --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: > > > De: daniel <daniel319@gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro@yahoo.es> > CC: r-help-es@r-project.org > Fecha: martes, 26 de febrero, 2013 18:26 > > > Eva, > > Revisa los paquetes grid y gridExtra que tienen sus propias versiones de layout. > > Daniel Merino > > El 26 de febrero de 2013 13:58, Eva Prieto Castro <evapcastro@yahoo.es> escribió: > > > Daniel, ¿no hay manera de determinar un height (o equivalente) para los plot sin usar layout?. En caso de que lo haya, ¿cómo se establece sobre qué plot voy a pintar/escribir?. > > Gracias > > > Eva > > --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: > > > De: daniel <daniel319@gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro@yahoo.es> > CC: r-help-es@r-project.org > Fecha: martes, 26 de febrero, 2013 17:37 > > > Eva, has definido la función layout, aunque creo recordar que no te servía tampoco. > > windows(width=8.27, height=11.69) > layout(matrix(c(1,1,1,2,2,2,3,3,3), 3, 3, byrow = TRUE), heights = c(1, 3,1)) > plot(1:2, ylim=c(1,2)) > plot(1:3, ylim=c(1,20)) > text( 2, 10, "ABC") > mtext("Plot of b vs b",side=1, line=2) > plot(1:4, ylim=c(1,3)) > mtext("Plot of a vs a",side=3, line=2) > > > Daniel Merino > > El 26 de febrero de 2013 13:00, Eva Prieto Castro <evapcastro@yahoo.es> escribió: > > Hola! > > Creo que ya sé cómo puedo hacer: coloco 3 plot (el central es el que va a tener los ejes visibles; los otros dos plots los voy a destinar a información complementaria; será texto en el caso del plot superior y tabla con título en el caso del plot inferior). De ese modo consigo que el dev.copy2plot expanda todo. > > A continuación pongo un ejemplo básico, pero lo que no sé es cómo conseguir ajustar la altura de cada plot, porque ponga el ylim que ponga, los hace iguales, como podéis comprobar al ejecutar ésto: > > library(plotrix) > > graphics.off() > > windows(width=8.27, height=11.69) > > > par(mfrow=c(3,1), mar=c(2, 2, 2, 1.5), oma=c(1, 1, 2, 0)) > plot(1:2, ylim=c(1,2)) > plot(1:3, ylim=c(1,20)) > plot(1:4, ylim=c(1,3)) > mtext("Plot of a vs a",side=3,outer=TRUE) > dev.copy2pdf(file="MeVarios.pdf",height=11.69, width=8.27) > > shell.exec(file.path(getwd(), "MeVarios.pdf")) > > > A ver si me podéis iluminar. > > > Gracias. > > Eva > --- El mar, 26/2/13, Eva Prieto Castro <evapcastro@yahoo.es> escribió: > > > De: Eva Prieto Castro <evapcastro@yahoo.es> > > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "daniel" <daniel319@gmail.com> > CC: r-help-es@r-project.org > Fecha: martes, 26 de febrero, 2013 16:09 > > > > Hola de nuevo, > > Volviendo sobre el mismo problema que comentaba esta mañana, me pregunto si es posible crear una especie de plot imaginario (sin ejes visualizados ni labels ni nada) que ocupe todo la pantalla gráfica, y dentro de él meter todo lo que me interese (mi plot, mis text(), mi tabla, etc.). Sería un modo de engañar al dev.copy2pdf, que supuestamente expandiría el plot imaginario, y entonces por extensión quedaría expandido todo lo que haya dibujado en su interior. > > A lo mejor es muy descabellado, pero por si acaso prefiero consultaros... > > Gracias. > > Eva > --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: > > > De: daniel <daniel319@gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro@yahoo.es> > CC: r-help-es@r-project.org > Fecha: martes, 26 de febrero, 2013 15:50 > > Eva, > > Respecto del primer mensaje lo que hice fue calcular el 70% del alto y el ancho (arbitrario para que ingresara al área el texto superior), puede ser que la proporción correcta sea diferente, cuestión de ajustar hasta que conforme. No veo problemas para que esto lo incluyas en una función al fin y al cabo esas proporciones deberían mantenerse en la medida que los textos que pongas por fuera del área del plot no sean muy diferentes. > > Respecto del segundo mensaje, abrí el IntentoEnesimo.pdf en mi Adobe Reader 9 Versión 9.2.0.124 en una sesión de Windows XP, lo mandé a la impresora e imprimió todo. Para la impresión desde el Adobe Reader elegí como escala de página tanto "Ninguno" (supongo deriva al tamaño de la página que esta configurada como A4) como "Ajustar a área de Impresión". Los resultados como es de esperar son diferentes en cuanto a los márgenes pero en ambos casos a mi me imprimió todo. > > Daniel Merino > > > > El 26 de febrero de 2013 09:47, Eva Prieto Castro <evapcastro@yahoo.es> escribió: > > > Daniel, así funciona, al menos el ejemplo básico que os reporté. Pero no entiendo el porqué; ¿cómo calculaste eso?. > > El método que elija como definitivo tengo que generalizarlo; es decir, ponerlo como función. ¿Qué criterio debo utilizar entonces?. > > Eva > --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: > > > De: daniel <daniel319@gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro@yahoo.es> > CC: r-help-es@r-project.org > Fecha: martes, 26 de febrero, 2013 13:28 > > > Eva por que no mantienes las proporciones del área del plot respecto > del tamaño de la hoja, no se si serán las mejores proporciones en tu > ejemplo, es cuestión de probar, pero algo así: > > dev.copy2pdf(file="IntentoEnesimo.pdf",height=8.18, width=5.79) > > Daniel Merino > > > El día 26 de febrero de 2013 07:11, Eva Prieto Castro > <evapcastro@yahoo.es> escribió: > > > > Buenos días: > > > > Sigo cabezudeando con el tema de los gráficos; a ver si a alguien se le ocurre alguna idea... > > > > Supongamos este código: > > > > library(plotrix) > > graphics.off() > > windows(width=8.27, height=11.69) > > > > plot(3:10) > > #plot(3:10, main="Axis break test") > > par(xpd=TRUE) > > text(4, 11,"Axis break test") > > axis.break() > > axis.break(2,2.9,style="zigzag") > > mtext("Texto adicional", side=1, line=2) > > text(4, 9,"Texto") > > > > dev.copy2pdf(file="IntentoEnesimo.pdf",height=11.69, width=8.27) > > shell.exec(file.path(getwd(), "IntentoEnesimo.pdf")) > > > > Como podéis comprobar, el título "Axis break test" aparece en la pantalla gráfica, pero no en el pdf. Ésto es así porque lo escribo con text(). Si retiro la línea text(4, 11,"Axis break test") y cambio plot(3:10) por plot(3:10, main="Axis break test") sí que aparece en el pdf. Es lógico: forma parte del plot, y se tiene en cuenta al "expandir" el plot para su volcado en pdf. Pero sucede que necesito lograr un correcto funcionamiento para este caso (fuera del plot, con text()), porque debo dar cobertura a gráficos que llevan "información" (texto, líneas emulando eje horizonal superior, etc.) fuera del plot pero anexa a éste. No sé si me explico... > > > > ¿Se os ocurre alguna forma?. He probado utilizando layout y tampoco lo consigo. Es como si el plot adquiriese el protagonismo total y absoluto para el dev.copy2pdf. > > > > Gracias. > > > > Eva > > > > P.D.: Debo descartar alternativas tales como el uso del paquete qqplot2 (no lo podría compatibilizar con funciones que tengo que usar necesariamente dentro de la región del plot), y también descarto hacer pdf() y dev.off(). > > > > > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > > -- > Daniel > > > > > -- > Daniel > > > > > -- > Daniel > > > > > -- > Daniel-- Daniel [[alternative HTML version deleted]]
Eva Prieto Castro
2013-Feb-28 19:35 UTC
[R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible
Hola a tod@s: ¡Lo conseguí!. Me falta ajustar un par de cosillas por cuestión de estética, pero nada más. Gracias especialmente a Carlos Ortega y a Daniel. Daniel, al final mi layout es del tipo siguiente: layout(matrix(c(3,0,2,0,1,6,4,0,5,0),5,2,byrow=TRUE),c(8,2),c(0.5,0.5,6,0.5,2.5),FALSE) Con ese diseño consigo manejar de manera consistente todos los parámetros, con lo cual tanto la pantalla gráfica como el pdf quedan Ok. Un saludo. Eva --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: De: daniel <daniel319@gmail.com> Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible Para: "Eva Prieto Castro" <evapcastro@yahoo.es> CC: r-help-es@r-project.org Fecha: martes, 26 de febrero, 2013 21:02 Eva, En tu ejemplo en lugar de par(mfrow=c(3,1)) pon lo siguiente windows(width=8.27, height=11.69) layout(matrix(c(1,1,1,2,2,2,3,3,3), 3, 3, byrow = TRUE), heights = c(1, 4,1)) y fijate si es lo que quieres (quizás sea heights = c(1, 3,1)). Lo anterior se sigue directamente de leer lo que te envié antes. No puede ser que no lo puedas ver por pantalla ya que lo corrí sin problemas ¿? Daniel Merino El 26 de febrero de 2013 16:02, Eva Prieto Castro <evapcastro@yahoo.es> escribió:> > Hola de nuevo: > > Un buen punto de partida para mí sería ésto: > > x <- 1:10 > a <- runif(10, 0, 5) > b <- runif(10, 0, 5) > c <- runif(10, 0, 5) > > ylim <- c(0, 5) > > par(mfrow=c(3,1)) > > par(mar=c(0,4.1,2.1,3.1)) > #par(mfrow=c(3,1), mar=c(0,4,0,2)+0.1, oma=c(5,0,3,0)+0.1 ) > > plot(x, a, type="o", ylim=ylim, axes=FALSE) > axis(1, labels=FALSE) > axis(2) > axis(3) > axis(4) > box() > > par(mar=c(0,4.1,0,3.1)) > > plot(x, b, type="o", ylim=ylim, axes=FALSE) > axis(1, labels=FALSE) > axis(2) > axis(3, labels=FALSE) > axis(4) > box() > > par(mar=c(2.1,4.1,0,3.1)) > > plot(x, c, type="o", ylim=ylim, axes=FALSE) > axis(1) > axis(2) > axis(3, labels=FALSE) > axis(4) > box() > > > El plot central lo utilizaría para la gráfica propiamente dicha, y los otros dos los pondría sin ejes visibles, para mostrar texto y tabla de resultados, así como franjas colindantes con los ejes horizontales del plot central. > > El problema es que no consigo manejar el height de esos plot. Necesito que el central tenga una proporción de 4 a 1 respecto a los otros dos. > > Daniel, si lo hago con layout no consigo que me queden así solapados. > > ¿Se os ocurre algo?. > > > Gracias. > > Eva > > > --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: > > > De: daniel <daniel319@gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro@yahoo.es> > CC: r-help-es@r-project.org > Fecha: martes, 26 de febrero, 2013 18:26 > > > Eva, > > Revisa los paquetes grid y gridExtra que tienen sus propias versiones de layout. > > Daniel Merino > > El 26 de febrero de 2013 13:58, Eva Prieto Castro <evapcastro@yahoo.es> escribió: > > > Daniel, ¿no hay manera de determinar un height (o equivalente) para los plot sin usar layout?. En caso de que lo haya, ¿cómo se establece sobre qué plot voy a pintar/escribir?. > > Gracias > > > Eva > > --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: > > > De: daniel <daniel319@gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro@yahoo.es> > CC: r-help-es@r-project.org > Fecha: martes, 26 de febrero, 2013 17:37 > > > Eva, has definido la función layout, aunque creo recordar que no te servía tampoco. > > windows(width=8.27, height=11.69) > layout(matrix(c(1,1,1,2,2,2,3,3,3), 3, 3, byrow = TRUE), heights = c(1, 3,1)) > plot(1:2, ylim=c(1,2)) > plot(1:3, ylim=c(1,20)) > text( 2, 10, "ABC") > mtext("Plot of b vs b",side=1, line=2) > plot(1:4, ylim=c(1,3)) > mtext("Plot of a vs a",side=3, line=2) > > > Daniel Merino > > El 26 de febrero de 2013 13:00, Eva Prieto Castro <evapcastro@yahoo.es> escribió: > > Hola! > > Creo que ya sé cómo puedo hacer: coloco 3 plot (el central es el que va a tener los ejes visibles; los otros dos plots los voy a destinar a información complementaria; será texto en el caso del plot superior y tabla con título en el caso del plot inferior). De ese modo consigo que el dev.copy2plot expanda todo. > > A continuación pongo un ejemplo básico, pero lo que no sé es cómo conseguir ajustar la altura de cada plot, porque ponga el ylim que ponga, los hace iguales, como podéis comprobar al ejecutar ésto: > > library(plotrix) > > graphics.off() > > windows(width=8.27, height=11.69) > > > par(mfrow=c(3,1), mar=c(2, 2, 2, 1.5), oma=c(1, 1, 2, 0)) > plot(1:2, ylim=c(1,2)) > plot(1:3, ylim=c(1,20)) > plot(1:4, ylim=c(1,3)) > mtext("Plot of a vs a",side=3,outer=TRUE) > dev.copy2pdf(file="MeVarios.pdf",height=11.69, width=8.27) > > shell.exec(file.path(getwd(), "MeVarios.pdf")) > > > A ver si me podéis iluminar. > > > Gracias. > > Eva > --- El mar, 26/2/13, Eva Prieto Castro <evapcastro@yahoo.es> escribió: > > > De: Eva Prieto Castro <evapcastro@yahoo.es> > > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "daniel" <daniel319@gmail.com> > CC: r-help-es@r-project.org > Fecha: martes, 26 de febrero, 2013 16:09 > > > > Hola de nuevo, > > Volviendo sobre el mismo problema que comentaba esta mañana, me pregunto si es posible crear una especie de plot imaginario (sin ejes visualizados ni labels ni nada) que ocupe todo la pantalla gráfica, y dentro de él meter todo lo que me interese (mi plot, mis text(), mi tabla, etc.). Sería un modo de engañar al dev.copy2pdf, que supuestamente expandiría el plot imaginario, y entonces por extensión quedaría expandido todo lo que haya dibujado en su interior. > > A lo mejor es muy descabellado, pero por si acaso prefiero consultaros... > > Gracias. > > Eva > --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: > > > De: daniel <daniel319@gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro@yahoo.es> > CC: r-help-es@r-project.org > Fecha: martes, 26 de febrero, 2013 15:50 > > Eva, > > Respecto del primer mensaje lo que hice fue calcular el 70% del alto y el ancho (arbitrario para que ingresara al área el texto superior), puede ser que la proporción correcta sea diferente, cuestión de ajustar hasta que conforme. No veo problemas para que esto lo incluyas en una función al fin y al cabo esas proporciones deberían mantenerse en la medida que los textos que pongas por fuera del área del plot no sean muy diferentes. > > Respecto del segundo mensaje, abrí el IntentoEnesimo.pdf en mi Adobe Reader 9 Versión 9.2.0.124 en una sesión de Windows XP, lo mandé a la impresora e imprimió todo. Para la impresión desde el Adobe Reader elegí como escala de página tanto "Ninguno" (supongo deriva al tamaño de la página que esta configurada como A4) como "Ajustar a área de Impresión". Los resultados como es de esperar son diferentes en cuanto a los márgenes pero en ambos casos a mi me imprimió todo. > > Daniel Merino > > > > El 26 de febrero de 2013 09:47, Eva Prieto Castro <evapcastro@yahoo.es> escribió: > > > Daniel, así funciona, al menos el ejemplo básico que os reporté. Pero no entiendo el porqué; ¿cómo calculaste eso?. > > El método que elija como definitivo tengo que generalizarlo; es decir, ponerlo como función. ¿Qué criterio debo utilizar entonces?. > > Eva > --- El mar, 26/2/13, daniel <daniel319@gmail.com> escribió: > > > De: daniel <daniel319@gmail.com> > Asunto: Re: [R-es] Ayuda con dev.copy2pdf - Ejemplo reproducible > Para: "Eva Prieto Castro" <evapcastro@yahoo.es> > CC: r-help-es@r-project.org > Fecha: martes, 26 de febrero, 2013 13:28 > > > Eva por que no mantienes las proporciones del área del plot respecto > del tamaño de la hoja, no se si serán las mejores proporciones en tu > ejemplo, es cuestión de probar, pero algo así: > > dev.copy2pdf(file="IntentoEnesimo.pdf",height=8.18, width=5.79) > > Daniel Merino > > > El día 26 de febrero de 2013 07:11, Eva Prieto Castro > <evapcastro@yahoo.es> escribió: > > > > Buenos días: > > > > Sigo cabezudeando con el tema de los gráficos; a ver si a alguien se le ocurre alguna idea... > > > > Supongamos este código: > > > > library(plotrix) > > graphics.off() > > windows(width=8.27, height=11.69) > > > > plot(3:10) > > #plot(3:10, main="Axis break test") > > par(xpd=TRUE) > > text(4, 11,"Axis break test") > > axis.break() > > axis.break(2,2.9,style="zigzag") > > mtext("Texto adicional", side=1, line=2) > > text(4, 9,"Texto") > > > > dev.copy2pdf(file="IntentoEnesimo.pdf",height=11.69, width=8.27) > > shell.exec(file.path(getwd(), "IntentoEnesimo.pdf")) > > > > Como podéis comprobar, el título "Axis break test" aparece en la pantalla gráfica, pero no en el pdf. Ésto es así porque lo escribo con text(). Si retiro la línea text(4, 11,"Axis break test") y cambio plot(3:10) por plot(3:10, main="Axis break test") sí que aparece en el pdf. Es lógico: forma parte del plot, y se tiene en cuenta al "expandir" el plot para su volcado en pdf. Pero sucede que necesito lograr un correcto funcionamiento para este caso (fuera del plot, con text()), porque debo dar cobertura a gráficos que llevan "información" (texto, líneas emulando eje horizonal superior, etc.) fuera del plot pero anexa a éste. No sé si me explico... > > > > ¿Se os ocurre alguna forma?. He probado utilizando layout y tampoco lo consigo. Es como si el plot adquiriese el protagonismo total y absoluto para el dev.copy2pdf. > > > > Gracias. > > > > Eva > > > > P.D.: Debo descartar alternativas tales como el uso del paquete qqplot2 (no lo podría compatibilizar con funciones que tengo que usar necesariamente dentro de la región del plot), y también descarto hacer pdf() y dev.off(). > > > > > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > > -- > Daniel > > > > > -- > Daniel > > > > > -- > Daniel > > > > > -- > Daniel-- Daniel [[alternative HTML version deleted]]