在ggplot2条形图中反转堆叠顺序而不影响图例顺序

12
如何在ggplot2中改变条形图的堆叠顺序?介绍了如何反转堆叠顺序,但是解决方案也会改变图例中的顺序。我想在不影响图例顺序的情况下改变堆叠顺序,使得图例中的最高类别也是堆叠中的最高类别。
library(ggplot2)
data(mtcars)
ggplot(mtcars, aes(factor(cyl), fill=gear)) + geom_bar()

使用 <code>ggplot2::ggplot</code> 创建的原始柱状图

要反转堆叠顺序,请反转因子水平。这也会反转图例顺序。

mtcars$gear <- factor(mtcars$gear)  # First make factor with default levels
mtcars$gear <- factor(mtcars$gear, levels=rev(levels(mtcars$gear)))
ggplot(mtcars, aes(factor(cyl), fill=gear)) + geom_bar()

反转的柱形图

如何反转图例(标签和颜色),使高值在下方开始?建议使用guide_legend(reverse=T),但不容易复制,并且不适用于堆积条形图。


1个回答

17
您可以使用 scale_fill_discrete 来反转图例的顺序:
ggplot(mtcars, aes(factor(cyl), fill=gear)) + geom_bar() + 
    scale_fill_discrete(guide=guide_legend(reverse=T))

Plot of reversed legend order


1
谢谢!这篇文章帮助我在 ggplot2 更新后使图形看起来像“传统”图形,例如 https://blog.rstudio.org/2016/11/14/ggplot2-2-2-0/。基本上,我必须在 fill 美学上使用 forcats::fct_rev(),在 scale_fill_manual 中反转颜色,并在 guide_legend 中使用 reverse=T - Shadow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接