如何自定义堆叠条形图中的颜色

时间:2020-05-22 16:32:21

标签: r ggplot2

也许有人已经问过这个问题。

我有一个看起来像这样的数据框(dat):

    Sample      perc       cl  
      a          30         0
      b          22         0
      s          2          0
      z          19         0
      a          12         1
      b          45         1
      s          70         1
      z          1          1
      a          60         2
      b          67         2
      s          50         2
      z          18         2 

我想生成一个堆积的条形图。为此,我使用了以下命令:

g = ggplot(dat, aes(x = cl, y = Perc,fill = Sample)
    g + geom_bar(stat="identity", position = "fill", show.legend = FALSE) +
    scale_fill_manual(name = "Samples", values=c("a"="blue","b" = "blue","s" = "gray","z" = "red"))`

幸运的是,颜色分配正确。我的观点是,条形图中的样本顺序是从条形的顶部到底部从a到z,但是我希望这样一种情况,即灰色位于顶部,而条形从蓝色到最大的连续性不会丢失。这红色。也许还有另一种方法可以为条形着色并设置所需的顺序。

1 个答案:

答案 0 :(得分:1)

这些组按因子水平的顺序绘制在条形图中。您可以通过使用aes更改对factor(var, levels(var[order]))的调用中的因子水平的顺序来更改绘图顺序,如下所示:

library(ggplot2)
ggplot(dat, aes(x = cl, y = perc,
                fill = factor(Sample, levels(Sample)[c(3,1,2,4)]))) +
  geom_bar(stat="identity", position = "fill", show.legend = FALSE) +
  scale_fill_manual(name = "Samples",
                    values=c("a"="blue","b" = "blue","s" = "gray","z" = "red"))

enter image description here