2012-03-06 20 views
19

He producido un porcentaje barplot apilados partir de los datos siguientes, que está en un archivo csv,R: legend tipo en ggplot2

,ONE,TWO,THREE 
1,2432,420,18 
2,276,405,56 
3,119,189,110 
4,90,163,140 
5,206,280,200 
6,1389,1080,1075 
7,3983,3258,4878 
8,7123,15828,28111 
9,8608,48721,52576 
10,9639,44725,55951 
11,8323,45695,32166 
12,2496,18254,26600 
13,1524,8591,18583 
14,7861,1857,1680 
15,10269,5165,4618 
16,13560,64636,63262 

usando el siguiente código

library(ggplot2) 
library(reshape2) 
library(scales) 

data <- read.csv(file="file.csv",sep=",",header=TRUE) 
data <- data[,2:ncol(data)] 
datam <- melt(cbind(data,ind = sort(rownames(data))),is.var = c('ind')) 
datam$ind <- as.numeric(datam$ind) 
ggplot(datam,aes(x = variable, y = value,fill = factor(as.numeric(ind)))) + 
geom_bar(position = "fill") + scale_y_continuous(labels =percent_format()) + 
scale_fill_discrete("Barcode\nMatch") +xlab("Barcode")+ylab("Reads") 

El resultado es enter image description here

El problema es que los elementos de la leyenda no están en el mismo orden que las pilas que representan. Los colores y los números son correctos pero el orden no. En otras palabras, ¿hay alguna manera de invertir el orden de los elementos en la leyenda? Gracias

Respuesta

29

se puede utilizar una nueva opción reverse = TRUE:

ggplot(datam,aes(x = variable, y = value,fill = factor(as.numeric(ind)))) + 
    geom_bar(position = "fill") + scale_y_continuous(labels =percent_format()) + 
    scale_fill_discrete("Barcode\nMatch") + xlab("Barcode")+ylab("Reads") + 
    guides(fill = guide_legend(reverse = TRUE)) 

enter image description here

2

Añadir + scale_fill_hue(breaks=c("new order 1","new order 2","new order...")) como en:

library(ggplot2) 
ggplot(data=PlantGrowth, aes(x=group, fill=group)) + geom_bar() + 
    geom_bar(colour="black", legend=FALSE) + 
    scale_fill_hue(breaks=c("trt1","ctrl","trt2")) 

También me echa un vistazo a http://wiki.stdout.org/rcookbook/Graphs/Legends%20(ggplot2)/ por más.

Esto puede haber cambiado y ser más fácil con la nueva ggplot, pero no estoy seguro.

+1

Esto no funciona con un porcentaje barplot apilados. –

+0

Aquí hay un enlace actualizado para más información de Legends: http://www.cookbook-r.com/Graphs/Legends_(ggplot2)/. – nofinator

Cuestiones relacionadas