x轴上方和下方计数的堆积条形图?

Posted

技术标签:

【中文标题】x轴上方和下方计数的堆积条形图?【英文标题】:Stacked Bar-chart with count above and below x-axis? 【发布时间】:2022-01-06 23:53:06 【问题描述】:

我有一个包含多个类别的大型数据集,以及一个带有 YES 和 NO 值的决策列。我想绘制一个堆叠条形图,其中决定列将结果堆叠在 x 轴上方的 YES 值和 x 轴下方的 NO 值。我该怎么做?

我在下面做了一个模型来展示我想要的东西。请注意,所有类别都可以有一个 YES 和一个 NO 值。

【问题讨论】:

如果您尝试过,您能否更新可重现的示例和代码? 【参考方案1】:

您可以使用dplyr 将“是”值转换为正数,将“否”值转换为负数,然后使用堆叠的geom_col

您还没有提供任何示例数据,所以我为以下代表做了一些补充:

set.seed(69)
df <- data.frame(Var1 = sample(LETTERS[1:6], 500, replace = TRUE, prob = 1:6),
                 Var2 = as.factor(sample(1:6, 500, replace = TRUE, prob = 6:1)),
                 YesNo = sample(c("Yes", "No"), 500, TRUE))
head(df)
#>   Var1 Var2 YesNo
#> 1    D    1   Yes
#> 2    C    3    No
#> 3    D    6   Yes
#> 4    B    3   Yes
#> 5    E    1    No
#> 6    B    1   Yes

数据操作和绘图如下所示:

library(dplyr)
library(ggplot2)

df %>% 
  group_by(Var1, Var2) %>% 
  summarize(Yes = sum(YesNo == "Yes"), No = -sum(YesNo == "No")) %>%
  ggplot(aes(x = Var2, y = Yes, fill = Var1)) + 
    geom_col(position = "stack") +
    geom_col(aes(y = No), position = "stack") +
    geom_hline(aes(yintercept = 0)) + 
    labs(y = paste("No", "Yes", sep = paste(rep(" ", 20), collapse = " ")))

由reprex package (v0.3.0) 于 2020-05-14 创建

【讨论】:

以上是关于x轴上方和下方计数的堆积条形图?的主要内容,如果未能解决你的问题,请参考以下文章

条形图,y 轴计数,x 轴年份,2 个颜色组

修改 x 轴下方凌乱和重叠的日期标签的最优雅方法? (Seaborn,条形图)

日期箱内变量计数的堆积条形图

如何使熊猫分类堆积条形图比例为 100%

Matplotlib条形图仅在非零条形图处显示x-ticks

如何在图下方居中 matplotlib 滑块并重新标记滑块标签?