[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