堆叠条形图 ggplot2 - 重新排序填充

Posted

技术标签:

【中文标题】堆叠条形图 ggplot2 - 重新排序填充【英文标题】:Stacked bar charts ggplot2 - reorder fill 【发布时间】:2015-10-14 04:18:06 【问题描述】:

我正在使用 ggplot2 绘制堆积条形图。我用变量car_makecolorproportion 创建了一个数据框(df_car),后者是数字。有 20 种类型的 car_make 沿 x 轴移动,而 color 中有 4 种类型作为填充。每个car_make的比例加起来为1。

我不希望car_make 按字母顺序排列,所以我重新排序:

df_car$car_make <- factor(df_car$car_make, levels = c("toyota", "ford", "mercedes", etc.)

然后我重新订购了填充水平:

df_car$color <- factor(df_car$color, levels = c("red", "white", "black", "silver")

我绘制堆积条形图:

bp_car<- ggplot(df_car, aes(x=car_make, y=proportion, fill=color)) + geom_bar(stat="identity")

x 轴按照我指定的方式出现。但是条形填充的顺序仍然按字母顺序排列……只有图例的顺序会响应并按指定出现。正在执行...

levels(df_car$color)

给...

“红”、“白”、“黑”、“银”

如何让条形填充物重新订购?

【问题讨论】:

【参考方案1】:

您不需要其中包含颜色名称的数据列(ggplot 在这种方式与基本图形不同)。一旦您的汽车等级得到适当的排序(如您所做的那样),您需要设置填充颜色比例

bp_car <- ggplot(df_car, aes(x = car_make, y = proportion, fill = car_make)) +
    geom_bar(stat="identity") +
    scale_fill_manual(values = c("red", "white", "black", "silver"))

【讨论】:

以上是关于堆叠条形图 ggplot2 - 重新排序填充的主要内容,如果未能解决你的问题,请参考以下文章