【问题标题】:Reverse the order of a stacked bar chart in ggplot反转ggplot中堆叠条形图的顺序
【发布时间】:2020-10-16 20:32:24
【问题描述】:

我正在做一个销售分析,看看有多少销售发生在不同的时间段。这是我的代码:

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_rev、relevel 和 order,但每次我在绘制之前将 g 定义为因子,结果就像 this。

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

【问题讨论】:

  • 欢迎堆栈溢出。如果您使您的问题可重现,则更容易提供帮助:以对象的形式包含一个最小数据集,例如,如果数据框为 df minimal reproducible example 和 How to Ask

标签: r ggplot2 geom-bar stacked-chart


【解决方案1】:

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

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查看更多详情。

【讨论】:

    猜你喜欢
    • 2017-07-21
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 2021-10-22
    • 2020-01-30
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多