堆叠条形图 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 - 重新排序填充的主要内容,如果未能解决你的问题,请参考以下文章

堆积条形图,按总计(值的总和)重新排序,而不是值 ggplot2 + dplyr

R语言ggplot2可视化整体排序的水平堆叠分离(dodge)条形图(Stacked Barplot Side By Side with position=dodge)

R语言ggplot2可视化:ggplot2可视化水平堆叠条形图并且在每个堆叠条形图的内部居中添加百分比文本标签信息

R语言画图-条形图,堆叠条形图(ggplot2)

R语言使用ggplot2可视化堆叠条形图,并在堆叠条形图上显示数据值实战

R可视化ggplot2绘制堆叠的条形图(Stacked Barplot)