with used stat_count not must multiple grouped ggplot geom_col geom_bar examples error bar aesthetic r ggplot2 bar-chart geom-bar

used - Las barras en geom_bar tienen diferentes anchos no deseados al usar facet_wrap



graph bar in r ggplot (2)

Aquí lo que hice después de la sugerencia de Gregor. Usar geom_segment y geom_point hace un buen gráfico, como creo.

library(ggplot2) all<-read.xls(''all_auto_visual_c.xls'') all$station<-as.factor(all$station) all$group.new<-factor(all$group, levels=c(''C. hyperboreus'',''C. glacialis'',''Combined'',''M. longa'',''Pseudocalanus sp.'',''Copepoda'')) all$shortname2.new<-factor(all$shortname2, levels=c(''All'',''F'',''M'',''C5'',''C4'',''C3'',''C2'',''C1'',''Micro'', ''Oith'',''Tric'',''Cegg'',''Cnaup'',''C3&2'',''C2&1'')) allp<-ggplot(all, aes(x=perc_correct, y=shortname2.new)) + geom_segment(aes(yend=shortname2.new), xend=0, colour="grey50") + geom_point(size=4, aes(colour=sample_size)) + scale_colour_gradient("Sample size (n)",low="lightblue",high="navyblue") + geom_text(aes(label = perc_correct, hjust = -0.5)) + theme_bw() + theme(panel.grid.major.y = element_blank()) + facet_grid(group.new~station,scales="free_y",space="free") + xlab("Automatic identification and visual validation concur (%)") + ylab("Species and stages")+ ggtitle("Visual validation of predictions")+ theme_bw() + theme(plot.title = element_text(lineheight=.8, face="bold", size=20,vjust=1), axis.text.x = element_text(colour="grey20",size=12,angle=0,hjust=.5,vjust=.5,face="bold"), axis.text.y = element_text(colour="grey20",size=12,angle=0,hjust=1,vjust=0,face="bold"), axis.title.x = element_text(colour="grey20",size=15,angle=0,hjust=.5,vjust=0,face="bold"), axis.title.y = element_text(colour="grey20",size=15,angle=90,hjust=.5,vjust=1,face="bold"),legend.position="none", strip.text.x = element_text(size = 12, face="bold", colour = "black", angle = 0), strip.text.y = element_text(size = 8, face="bold", colour = "black")) allp ggsave(allp, file="auto_visual_no_label.jpeg", height= 11, width= 8.5, dpi= 400,)

¡Esto es lo que produce!

Podría encontrar una solución para el (los) siguiente (s) problema (s). ¡Apreciaría mucho la ayuda!

El siguiente código produce gráficos de barras con faceta. Sin embargo, debido al "espacio extra" ggplot2 tiene en algunos grupos que hace que las barras sean mucho más amplias, incluso si especifico un ancho de 0.1 o similar. Me parece muy molesto, ya que lo hace parecer muy poco profesional. Quiero que todas las barras tengan el mismo aspecto (excepto el relleno). Espero que alguien me diga cómo arreglar esto.

En segundo lugar, ¿cómo puedo reordenar las diferentes clases en las ventanas de faceta para que el orden sea siempre C1, C2 ... C5, M, F, todo donde corresponda. Lo intenté ordenando los niveles del factor, pero como no todas las clases están presentes en cada parte del gráfico, no funcionó, o al menos supongo que ese fue el motivo.

En tercer lugar, ¿cómo puedo reducir el espacio entre las barras? Para que todo el gráfico esté más comprimido. Incluso si hago que la imagen sea más pequeña para exportar, R escalará las barras más pequeñas, pero los espacios entre las barras siguen siendo enormes.

¡Agradecería comentarios por cualquiera de esas respuestas!

Mis datos: http://pastebin.com/embed_iframe.php?i=kNVnmcR1

Mi código:

library(dplyr) library(gdata) library(ggplot2) library(directlabels) library(scales) all<-read.xls(''all_auto_visual_c.xls'') all$station<-as.factor(all$station) #all$group.new<-factor(all$group, levels=c(''C. hyperboreus'',''C. glacialis'',''Special Calanus'',''M. longa'',''Pseudocalanus sp.'',''Copepoda'')) allp <- ggplot(data = all, aes(x=shortname2, y=perc_correct, group=group,fill=sample_size)) + geom_bar(aes(fill=sample_size),stat="identity", position="dodge", width=0.1, colour="NA") + scale_fill_gradient("Sample size (n)",low="lightblue",high="navyblue")+ facet_wrap(group~station,ncol=2,scales="free_x")+ xlab("Species and stages") + ylab("Automatic identification and visual validation concur (%)") + ggtitle("Visual validation of predictions") + theme_bw() + theme(plot.title = element_text(lineheight=.8, face="bold", size=20,vjust=1), axis.text.x = element_text(colour="grey20",size=12,angle=0,hjust=.5,vjust=.5,face="bold"), axis.text.y = element_text(colour="grey20",size=12,angle=0,hjust=1,vjust=0,face="bold"), axis.title.x = element_text(colour="grey20",size=15,angle=0,hjust=.5,vjust=0,face="bold"), axis.title.y = element_text(colour="grey20",size=15,angle=90,hjust=.5,vjust=1,face="bold"),legend.position="none", strip.text.x = element_text(size = 12, face="bold", colour = "black", angle = 0), strip.text.y = element_text(size = 12, face="bold", colour = "black")) allp #ggsave(allp, file="auto_visual_stackover.jpeg", height= 11, width= 8.5, dpi= 400,)

El gráfico actual que necesita cierta corrección:

¡Muchas gracias!


Suponiendo que los anchos de barra son inversamente proporcionales al número de x-breaks, se puede construir un factor de escala apropiado en la función geom_bar() . Pero primero, calcule el número de saltos x en cada panel, calcule el factor de escala y vuelva a colocarlos en el marco de datos "todos".

Actualizando a ggplot2 2.0.0 Cada columna mencionada en facet_wrap tiene su propia línea en la tira. En la edición, se configura una nueva variable de etiqueta en el marco de datos para que la etiqueta de tira permanezca en una línea.

# Calculate scaling factor and insert into data frame library(plyr) N = ddply(all, .(station, group), function(x) length(row.names(x))) N$Fac = N$V1 / max(N$V1) all = merge(all, N[,-3], by = c("station", "group")) all$label = paste(all$group, all$station, sep = ", ") allp <- ggplot(data = all, aes(x=shortname2, y=perc_correct, group=group,fill=sample_size)) + # Adjust the bar widths according to the scaling factor geom_bar(aes(width = .5*Fac), stat="identity", position="dodge", colour="NA") + scale_fill_gradient("Sample size (n)",low="lightblue",high="navyblue")+ facet_wrap(~label,ncol=2,scales="free_x")+ # facet_wrap(group~station,ncol=2,scales="free_x")+ xlab("Species and stages") + ylab("Automatic identification and visual validation concur (%)") + ggtitle("Visual validation of predictions") + theme_bw() + theme(plot.title = element_text(lineheight=.8, face="bold", size=20,vjust=1), axis.text.x = element_text(colour="grey20",size=12,angle=0,hjust=.5,vjust=.5,face="bold"), axis.text.y = element_text(colour="grey20",size=12,angle=0,hjust=1,vjust=0,face="bold"), axis.title.x = element_text(colour="grey20",size=15,angle=0,hjust=.5,vjust=0,face="bold"), axis.title.y = element_text(colour="grey20",size=15,angle=90,hjust=.5,vjust=1,face="bold"), legend.position="none", strip.text.x = element_text(size = 12, face="bold", colour = "black", angle = 0), strip.text.y = element_text(size = 12, face="bold", colour = "black")) allp