使用 ggplot 在分组条形图上定位标签

Posted

技术标签:

【中文标题】使用 ggplot 在分组条形图上定位标签【英文标题】:Positionning labels on a grouped bar chart with ggplot 【发布时间】:2021-09-26 01:08:25 【问题描述】:

我在为分组条形图定位标签时遇到问题。 下面是一个可重现的示例,在图像上您可以看到我希望放置标签的位置。

并非都在同一行,但每个标签都与 3 个条形图中的每一个对齐,理想情况下,每个标签都位于每个相应条形图的正上方。

知道如何实现这一目标吗?我想保留分组条形图而不是堆叠条形图。

data_F <- "https://raw.githubusercontent.com/max9nc9/Temp/main/temp.csv"
data_F <- read.csv(data_F, sep = ";")
colnames(data_F) <- c("Month_Year", "Type", "Amount")
data_F$Amount <- as.numeric(data_F$Amount)

Final_Graph <-
  ggplot(data_F, aes(x = Month_Year, y = Amount, label = Amount, fill = Type)) +
  geom_bar(position="dodge", stat = "identity") +
  geom_text(size = 3, position = position_stack(vjust = 0.5), color = "black") +
  theme(axis.text.x = element_text(angle = 90)) +
  scale_fill_manual(values = c("#e62200", "#00c41d", "#f7b21e")) +
  theme(plot.title = element_text(hjust = 0.5)) +
  theme(plot.subtitle = element_text(hjust = 0.5))

Final_Graph

【问题讨论】:

【参考方案1】:

当您使用position_dodge 作为条形时,也将它用于标签,我使用width = .9,这是条形的默认值:

data_F <- "https://raw.githubusercontent.com/max9nc9/Temp/main/temp.csv"
data_F <- read.csv(data_F, sep = ";")
colnames(data_F) <- c("Month_Year", "Type", "Amount")
data_F$Amount <- as.numeric(data_F$Amount)

library(ggplot2)

ggplot(data_F, aes(x = Month_Year, y = Amount, label = Amount, fill = Type)) +
  geom_bar(position="dodge", stat = "identity") +
  geom_text(size = 3, position = position_dodge(width = .9), vjust = 0, color = "black") +
  theme(axis.text.x = element_text(angle = 90)) +
  scale_fill_manual(values = c("#e62200", "#00c41d", "#f7b21e")) +
  theme(plot.title = element_text(hjust = 0.5)) +
  theme(plot.subtitle = element_text(hjust = 0.5))

【讨论】:

这正是我想要的,谢谢!

以上是关于使用 ggplot 在分组条形图上定位标签的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2可视化:使用dplyr包计算每个分组个数的比例(对计算获得的百分比进行近似,值保留整数部分)使用ggplot2可视化条形图(bar plot)并在条形图上添加百分比标签

修改顶部ggplot百分比条形图上的文本标签

如何在ggplot2中并排条形图上居中标签

R语言ggplot2可视化:在条形图标签上指定精确的小数点位数在条形图上输出数字标签并设置指定的小数位个数

条形图上条形图上方 ggplot 汇总统计量的注释

R语言ggplot2可视化绘制分组水平条形图并在条形图的各种位置添加数值标签实战