为了账号安全,请及时绑定邮箱和手机立即绑定

反向堆积条形图

反向堆积条形图

开心每一天1111 2019-12-03 16:18:38
我正在使用ggplot创建堆积的条形图,如下所示:plot_df <- df[!is.na(df$levels), ] ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = "fill")这给了我这样的东西:在此处输入图片说明如何颠倒堆叠条形图本身的顺序,以使级别1在每个条形图的底部,而级别5在每个条形图的顶部?我已经看到了很多问题(例如,如何使用ggplot2上的标识来控制堆叠条形图的排序),常见的解决方案似乎是按照该级别对数据帧进行重新排序,因为ggplot使用的是确定顺序因此,我尝试使用dplyr重新排序:plot_df <- df[!is.na(df$levels), ] %>% arrange(desc(levels))但是,剧情也是一样。我是按升序还是降序排列似乎也没有影响这是一个可重现的示例:group <- c(1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4)levels <- c("1","1","1","1","2","2","2","2","3","3","3","3","4","4","4","4","5","5","5","5","1","1","1","1")plot_df <- data.frame(group, levels)ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = "fill")
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

如果要以相反的顺序堆叠,请尝试 forcats::fct_rev()


library(ggplot2)   # version 2.2.1 used    

plot_df <- data.frame(group = rep(1:4, 6),

                      levels = factor(c(rep(1:5, each = 4), rep(1, 4))))

ggplot(plot_df, aes(group, fill = forcats::fct_rev(levels))) + 

  geom_bar(position = "fill")

反向水平


这是原始情节:


ggplot(plot_df, aes(group, fill = levels)) + 

  geom_bar(position = "fill")

原始情节


或者,position_fill(reverse = TRUE)按照alistaire在评论中的建议使用:


ggplot(plot_df, aes(group, fill = levels)) + 

  geom_bar(position = position_fill(reverse = TRUE))

在此处输入图片说明


请注意,图例中的级别(颜色)与堆叠条形的顺序不同。


查看完整回答
反对 回复 2019-12-03
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

    position_fill(reverse = TRUE)标准化条,position_stack(reverse = TRUE)如果您不想标准化条,请使用。

查看完整回答
反对 回复 2019-12-03
  • 2 回答
  • 0 关注
  • 770 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信