首页 > 解决方案 > 如何自定义堆积条形图中的颜色

问题描述

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

我有一个如下所示的数据框(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,但我希望灰色位于顶部,而条形图中的连续性从蓝色到这红色。也许还有另一种方法可以为条形着色并设置所需的顺序。

标签: rggplot2

解决方案


这些组按因子水平的顺序绘制在条形图中。您可以通过更改调用中的因子级别的顺序来更改绘图顺序,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"))

在此处输入图像描述


推荐阅读