在堆积条形图中反转 geom_text() (ggplot2)

Posted

技术标签:

【中文标题】在堆积条形图中反转 geom_text() (ggplot2)【英文标题】:Reversed geom_text() in stacked bar chart (ggplot2) 【发布时间】:2021-10-25 16:41:37 【问题描述】:

我正在制作一个相当复杂的条形图,并在其中添加了一条额外的帕累托线。 通常我的条形图可以正常工作 - 也可以使用堆叠条顶部的 geom_text() 标签。 但现在我似乎无法让它工作。 geom_bar() 的 geom_text() 在每个柱上的顺序错误(从上到下),我不知道为什么。这是(部分)我的代码:

ggplot() +
  theme_mso() +
  geom_bar(data = uth.sum, aes(x = reorder(dpsd_ny, -n), y = n, fill = alvor), stat = "identity") +
  geom_text(data = uth.sum, aes(x = reorder(dpsd_ny, -n), y = n, label = n), position = position_stack(vjust = .5)) +
  scale_fill_manual(values = col) +
  geom_point(data = uth.sum2, aes(x = dpsd_ny, y = akkumuleret)) +
  geom_line(data = uth.sum2, aes(x = dpsd_ny, y = akkumuleret, group = 1), stat = "identity") +
  scale_y_continuous(sec.axis = sec_axis(~(./total_value)*100, name = "Procent")) +
  geom_text(data = uth.sum2, aes(x = dpsd_ny, y = akkumuleret, label = procent), position = position_stack(vjust= 1.08)) +

....等等。希望这是有道理的,并且有人可以提供帮助!

【问题讨论】:

为了帮助我们提供帮助,您是否介意提供 a minimal reproducible example 包括您的数据的 sn-p 以测试您的代码。 ...但您可以尝试将组 aes(即group = alvor)添加到 geom_text。 group = alvor 工作!!!不知道为什么我自己没有尝试...非常感谢 stefan! 【参考方案1】:

您可以尝试将组的级别顺序指定为您喜欢的顺序。对于每个具有指定填充的几何图形,添加级别顺序规范。

#Specify level orders
level_order <- c("A", "B", "C", "D", "E", "F")

修改您的 ggplot 代码以将关卡顺序添加到适当的美学中。

geom_bar(aes(x=X, y=Y, fill=factor(group, level_order))

【讨论】:

以上是关于在堆积条形图中反转 geom_text() (ggplot2)的主要内容,如果未能解决你的问题,请参考以下文章

如何在堆积条形图中的每个条形上添加值[重复]

在情节堆积条形图中仅显示一行 df

spss如何删除堆积条形图中的某块数据

Google图表(可视化)中堆积条形图中的第三个条形图无效

Plotly:仅在特定子图中堆积条形图

使用 ggplot2 在堆积条形图中排序分类数据