在R中改变ggplot中组的顺序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在R中改变ggplot中组的顺序相关的知识,希望对你有一定的参考价值。

我正在使用ggplot绘制条形图。如何更改栏中组的顺序?在下面的例子中,我希望将type = 1984作为第一个条形堆栈,然后在1984年之前键入= 1985,依此类推。

  series <- data.frame(
  time = c(rep(1, 4),rep(2, 4), rep(3, 4), rep(4, 4)),
  type = c(1984:1987),
  value = rpois(16, 10)
)

ggplot(series, aes(time, value, group = type)) +
  geom_col(aes(fill= type))

使用series<- series[order(series$type, decreasing=T),]更改顺序只会更改图例中不在图中的顺序。

答案

使用desc()dplyr

ggplot(series, aes(time, value, group = desc(type))) +
    geom_col(aes(fill= type))
另一答案

从ggplot2版本2.2.1开始,您不需要重新排序数据框的行以在图中建立堆栈的顺序。

因此,纯ggplot方法(作为tmfmnk答案的替代方法)将是:

library(ggplot2)

series %>%
  ggplot(aes(time, value, group=factor(type, levels=1987:1984)))+
  geom_col(aes(fill= factor(type)))+
  guides(fill=guide_legend(title="type"))

作为一种好的做法,我建议在将变量type绘制为分类时使用因子。

结果:

enter image description here

以上是关于在R中改变ggplot中组的顺序的主要内容,如果未能解决你的问题,请参考以下文章

gitlab中组的分类及权限介绍

如何计算 MDX 中组的总和?

列表中组的模式匹配

如何在R中的ggplot2中绘制组均值的平均值?

获取活动记录中组的第一个孩子

Acl-cakePHP 中组的通用权限