在R中的ggplot中更改组的顺序

时间:2018-08-21 21:35:50

标签: r ggplot2 geom-col

我正在使用$(document).ready(function() { $('.boxTitle').css( 'background-color','#'+ ('000000' + Math.floor(Math.random()*16777215).toString(16)).slice(-6), ); }); 绘制条形图。如何更改栏中的组顺序?在下面的示例中,我想将type = 1984作为条形图的第一个堆栈,然后在1984的顶部上键入type = 1985,依此类推。

ggplot

使用 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)) 更改顺序只会更改图例中的顺序,而不会更改绘图中的顺序。

2 个答案:

答案 0 :(得分:3)

使用desc()中的dplyr

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

答案 1 :(得分:2)

从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