J. Miguel,
Es recomendable cargar la librería grid cuando trabajas con ggplot2, se
complementan bien, en este caso en particular uso en themes una opción que
llama a unit que es una función de grid.
En lo que hace a la resolución y luego de descubrir que ggsave no hacia lo
que quería (aún así míralo para ver si a ti te funciona usando valores de
resolución altos) , use png (tu planteo creo que elimina la posibilidad de
hacerlo con pdf siempre mejor), y allí te dejo solo para buscar todas las
combinaciones de resolución tamaño de salida, etc. que te permitan
encontrar la que te plazca o que te aburra lo suficiente como para terminar
los intentos.
Respecto de los márgenes me confundo con lo que señalas, pero no importa te
dejo planteado como lo haría usando plot.margin en themes. No se si lo que
buscas en cuanto a márgenes es mejor solucionarlo en R o en Word.
Cuando obtengas un gráfico que te guste y lo importes a Word quizás ya no
te guste más, por lo tanto, desde el principio fíjate si el resultado que
importas en Word es lo que buscas.
Aquí la contribución que espero te permita ver lo que no esta bien y
encontrar la solución correcta.
library(ggplot2)
library(grid)
tabla <-mtcars
Mean.Error=mtcars$wt*0.3
Mean=(mtcars$disp-mean(mtcars$disp))/sd(mtcars$disp)*11+275
inicio=c(0,175,245,275,325,375)
fin=c(175,225,275,305,375,500)
Niveles=c("Nivel<1","a","Nivel 2","Nivel
3","c","d")
niveles=data.frame(inicio,fin,Niveles)
Jurisdiction=rownames(mtcars)
for (i in 1:length(Jurisdiction))
if(Jurisdiction[i]=="Fiat 128"){k=i}
png(filename = "ggtest.png", width = 18, height = 24, units =
"cm",
pointsize = 1,
bg = "white", res = 72, family = "", restoreConsole =
TRUE, type "windows")
h <- ggplot(tabla, aes(x=factor(Jurisdiction), y=Mean, ymin=245, ymax=305))
h + scale_fill_manual(values = c("#A0551E",
"#FA964B","#E1EBFF", "#B4CDFF",
"#055014","#A0551E"))+
geom_hline(yintercept = seq(245, 305, 10), linetype=2,
colour="#E1EBFF")+
geom_vline(xintercept = seq(1, 33, 2.5), linetype=1,
colour="#E1EBFF")+
geom_vline(xintercept = -2, linetype=1, colour="white")+
geom_vline(xintercept = k, colour="#0000FF20", lwd=5)+
geom_rect(xmin=-2,xmax=-1, mapping=aes(NULL, NULL,
ymin=inicio[3:4],ymax=fin[3:4], fill=Niveles[3:4]),
alpha=1, data=niveles)+
geom_text(data=niveles, aes(x=-1.4, y=inicio[3:4]+(fin[3:4]-inicio[3:4])/2,
label=Niveles[3:4], size=2)) +
scale_x_discrete(labels=Jurisdiction)+ scale_y_continuous(breaks=seq(245,
305, 10))+
geom_errorbar(data=tabla, aes(y=Mean, ymin=Mean - 1.96*Mean.Error, ymax Mean +
1.96*Mean.Error),col="gray40", width=0.3, size=1) +
geom_point(data=tabla, aes(y=Mean), size = 3, colour ="gray30",
pch=16) +
labs(x="", y="")+
theme(panel.background=element_rect(fill="white",
colour="#B4CDFF"),
panel.grid.minor=element_blank(), panel.grid.major.y=element_blank(),
axis.text = element_text(colour = "black"),
legend.position="none",
plot.margin = unit(c(2, 1, 2, 1), ''cm'') ) +
guides(fill = guide_legend(label.position = "bottom"))+
coord_flip()
dev.off()
> sessionInfo()
R version 3.0.0 (2013-04-03)
Platform: i386-w64-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=Spanish_Argentina.1252 LC_CTYPE=Spanish_Argentina.1252
LC_MONETARY=Spanish_Argentina.1252 LC_NUMERIC=C
[5] LC_TIME=Spanish_Argentina.1252
attached base packages:
[1] grid stats graphics grDevices utils datasets methods
base
other attached packages:
[1] ggplot2_0.9.3.1
loaded via a namespace (and not attached):
[1] colorspace_1.2-2 dichromat_2.0-0 digest_0.6.3 gtable_0.1.2
labeling_0.1 MASS_7.3-26 munsell_0.4 plyr_1.8
proto_0.3-10
[10] RColorBrewer_1.0-5 reshape2_1.2.2 scales_0.2.3 stringr_0.6.2
>
Suerte,
Daniel Merino
El 14 de mayo de 2013 09:50, J. Miguel Marin
<jmmarin@est-econ.uc3m.es>escribió:
>
> Hola a tod@s,
>
> bueno, un poco al hilo de un mensaje anterior, reformulo la pregunta y
> pongo código completamente reproducible, a ver si hay más suerte.
>
> Estoy con un informe y hay que hacer algunos gráficos con datos diferentes
> con ggplot2, y hay que poner el mismo tamaño para todos ellos.
>
> El problema es que R cambia automáticamente el tamaño del área de trazado
> y el margen en función de la magnitud de los datos, de las diferentes
> longitudes de x y de las etiquetas del eje y.
>
> Necesitaría un tamaño fijo para el área de trazado (9cm x 12 cm), y para
> el margen que contiene los textos de los ejes y las etiquetas (4cm x 12cm).
> ¿Hay alguna solución?
>
> Por otro lado, hay que pegar el gráfico en un archivo de Word, pero se
> pierde resolución y no es la misma resolución que la que se ve en la
> pantalla gráfica de R. Probando con diferentes formatos (png, jpeg, pdf...)
> no parece mejorar.
>
> ¿Sabeis de alguna solución a algo de lo anterior?
>
> #.............................**............
>
> library(ggplot2)
> tabla <-mtcars
> Mean.Error=mtcars$wt*0.3
> Mean=(mtcars$disp-mean(mtcars$**disp))/sd(mtcars$disp)*11+275
> inicio=c(0,175,245,275,325,**375)
> fin=c(175,225,275,305,375,500)
> Niveles=c("Nivel<1","a","Nivel
2","Nivel 3","c","d")
> niveles=data.frame(inicio,fin,**Niveles)
> Jurisdiction=rownames(mtcars)
> for (i in 1:length(Jurisdiction))
> if(Jurisdiction[i]=="Fiat 128"){k=i}
> h <- ggplot(tabla, aes(x=factor(Jurisdiction), y=Mean, ymin=245,
ymax=305))
> h +
> scale_fill_manual(values = c("#A0551E",
"#FA964B","#E1EBFF", "#B4CDFF",
> "#055014","#A0551E"))+
> geom_hline(yintercept = seq(245, 305, 10), linetype=2,
colour="#E1EBFF")+
> geom_vline(xintercept = seq(1, 33, 2.5), linetype=1,
colour="#E1EBFF")+
> geom_vline(xintercept = -2, linetype=1, colour="white")+
> geom_vline(xintercept = k, colour="#0000FF20", lwd=5)+
> geom_rect(xmin=-2,xmax=-1, mapping=aes(NULL, NULL,
> ymin=inicio[3:4],ymax=fin[3:4]**, fill=Niveles[3:4]),
> alpha=1, data=niveles)+
> geom_text(data=niveles, aes(x=-1.4,
y=inicio[3:4]+(fin[3:4]-**inicio[3:4])/2,
> label=Niveles[3:4], size=2)) +
> scale_x_discrete(labels=**Jurisdiction)+
> scale_y_continuous(breaks=seq(**245, 305, 10))+
> geom_errorbar(data=tabla, aes(y=Mean, ymin=Mean - 1.96*Mean.Error, ymax
> Mean + 1.96*Mean.Error),col="gray40", width=0.3, size=1) +
> geom_point(data=tabla, aes(y=Mean), size = 3, colour ="gray30",
pch=16) +
> labs(x="", y="")+
> theme(panel.background=**element_rect(fill="white",
colour="#B4CDFF"),
> panel.grid.minor=element_**blank(), panel.grid.major.y=element_**blank(),
> axis.text = element_text(colour = "black"),
legend.position="none") +
> guides(fill = guide_legend(label.position = "bottom"))+
> coord_flip()
>
> #.............................**............
>
>
> Un saludo
>
> jm~
>
> ______________________________**_
>
> J. Miguel Marin
>
> http://www.est.uc3m.es/jmmarin
>
> Dep. of Statistics
> University Carlos III of Madrid
> European Union (EU)
>
> ______________________________**_________________
> R-help-es mailing list
> R-help-es@r-project.org
>
https://stat.ethz.ch/mailman/**listinfo/r-help-es<https://stat.ethz.ch/mailman/listinfo/r-help-es>
>
--
Daniel
[[alternative HTML version deleted]]