R中的堆叠条上的特定颜色与ggplot2

时间:2014-04-21 07:47:57

标签: r colors ggplot2 dataset

这是我在R中的代码:

prod <- read.csv("/tmp/pepper.csv",header=T,sep="\t")
png("/tmp/image.png", width=1000, height=1000)

datm <- melt(cbind(prod,ind = rownames(prod)),is.vars = c('ind'))

ggplot(datm,aes(x = codigo_inver,y = value,fill = factor(variable))) + 
  geom_bar(stat='identity', position = "fill" ) +
  coord_flip()+
  scale_colour_manual(values = c("red","orange", "green"))
dev.off()

数据集是:

green   orange  red codigo_inver
48.40   30.22   21.38   7_7726-14
32.31   28.18   39.51   8_7726-14
46.74   30.13   23.13   9_7577-4
55.13   32.80   12.06   21_7562-4
51.30   30.76   17.94   28_7614-1
40.65   37.75   21.60   30_7094-2

它产生:

enter image description here

但颜色与

不匹配
  

values = c(“red”,“orange”,“green”)

在图片中,红色应为绿色,绿色应为橙色,蓝色应为红色。

颜色必须与列名数据匹配,红色为红色,橙色为橙色,绿色为绿色。

如何将此颜色与原始列名称颜色匹配?

提前感谢!

2 个答案:

答案 0 :(得分:1)

当您使用fill分配颜色时,您还应使用相应的比例:

scale_fill_manual(values = c("red","orange", "green"))

现在应该可行

答案 1 :(得分:1)

从因子的级别获取颜色,并使用scale_fill_manual

ggplot(datm,aes(x = codigo_inver,y = value,fill = factor(variable))) + 
  geom_bar(stat='identity', position = "fill" ) +
  coord_flip()+
  scale_fill_manual(values = levels(factor(datm$variable)))

enter image description here

然而,传说现在看起来有点明显......