反转ggplot中堆叠条形图的顺序

Reverse the order of a stacked bar chart in ggplot

我正在进行销售分析,以查看在不同时间段发生了多少销售。这是我的代码:

mutate(
    g = ifelse(Diff_l_b < 720 & Diff_l_b > 360, -1, 
    ifelse(Diff_l_b < 360 & Diff_f_b > 270, 1,
    ifelse(Diff_f_b < 270 &  Diff_f_b > 90, 2,
    ifelse(Diff_f_b < 90,3, NA_real_))))
)   
ggplot(data = T_AD,
       aes(x = `Name Sales Representative`, y = g ))+
        geom_bar(stat = "identity", aes(fill = as.factor(g)))
        scale_fill_discrete(
          name = "Veterinarians Sold To", 
          labels = c("2 years ago", "last year", "last 9 month","last 3 month" ))+
        ggtitle( "Actica25")+
        ylab("Veterinarians Sold To") +
        coord_flip() 

它应该是这样的:

Graph

但是堆叠的顺序要反过来

我已经尝试过 fct_revrelevelorder,但每次我在绘制之前将 g 定义为因子时,结果都像 this.

所以“去年”部分应该在里面,“9 个月”在右边,“最后 3 个月”在右边。感谢您的帮助。

您没有提供数据示例,但是如果您只需要反转图中的堆积条,您可以使用:

position = position_stack(reverse = TRUE)

在您的 geom_bar()geom_col() 函数中,例如:

geom_bar(position = position_stack(reverse = TRUE), aes(fill = g))

documentation 中查看更多信息。

如果您需要翻转图例,请使用:

guides(fill = guide_legend(reverse = TRUE))

作为您 ggplot 的一部分,例如:

... +
ggtitle( "Actica25") +
ylab("Veterinarians Sold To") +
coord_flip() +
guides(fill = guide_legend(reverse = TRUE))

documentation 中查看更多详细信息。