[R-es] Tamaño plots y calidad en grafico ggplot

J. Miguel Marin jmmarin en est-econ.uc3m.es
Mar Mayo 14 14:50:47 CEST 2013


Hola a tod en 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)



Más información sobre la lista de distribución R-help-es