主要問題
使用 R 的庫創建堆積柱形圖時ggplot2,如何為列總計添加資料標簽以及為每個單獨的類/值添加資料標簽?
語境
ggplot2我正在嘗試使用 R 的庫復制以下圖表(最初在 Excel 中創建) :

圖 1 - Excel 中生成的圖表
可重現的示例和資料
這是我的資料和我正在使用的代碼的可重現示例:
# Loading libraries
library(ggplot2)
library(extrafont)
# Creating the data.frame object
data = data.frame(year=c(2017,2017,2017,2017,
2018,2018,2018,2018,
2019,2019,2019,2019,
2020,2020,2020,2020,
2021,2021,2021,2021),
hsys=factor(c('Interstate Highways', 'US Highways', 'State Highways', 'FM Roads',
'Interstate Highways', 'US Highways', 'State Highways', 'FM Roads',
'Interstate Highways', 'US Highways', 'State Highways', 'FM Roads',
'Interstate Highways', 'US Highways', 'State Highways', 'FM Roads',
'Interstate Highways', 'US Highways', 'State Highways', 'FM Roads'),
levels = c('Interstate Highways',
'US Highways',
'State Highways',
'FM Roads')),
num_crashes=c(3845,3562,3436,5749,
3978,3502,3565,5836,
4510,3692,3618,6133,
3517,2945,2957,4978,
4698,3765,3645,6158))
p = ggplot(data,
aes(fill=hsys,
y=num_crashes,
x=year,
label=format(num_crashes,
big.mark = ",",
decimal.mark = ".",
scientific = FALSE),
))
geom_bar(position="stack",
stat="identity")
geom_text(size=3,
position = position_stack(vjust=0.5,),
color='white',
family = "Franklin Gothic Book",
fontface = 'bold')
theme(plot.title = element_text(family="Franklin Gothic Demi Cond",
hjust = 0.5),
axis.title = element_text(family = "Franklin Gothic Book",),
axis.text = element_text(family = "Franklin Gothic Book",),
axis.title.y=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank(),
axis.title.x=element_blank(),
axis.ticks.x=element_blank(),
legend.position = "bottom",
legend.text = element_text(family = "Franklin Gothic Book",),
legend.title = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
)
scale_fill_manual(values = c("#3869A2",
"#0F3859",
"#CC7B28",
"#F4BC46",
"#79A03F"))
ggsave('hsys.jpg', p)

圖 2 - R 中生成的圖形
您會注意到,除了影像尺寸和字體大小不匹配之外,它們都包含幾乎完全相同的內容。真正缺少的是每列頂部的列總計的資料標簽。
我的嘗試

實作所需結果的第二種方法是使用stat_summary動態計算總數,如下所示:
p
stat_summary(
geom = "text", aes(group = 1, label = format(..y..,
big.mark = ",",
decimal.mark = ".",
scientific = FALSE
), ), fun = "sum", color = "black",
family = "Franklin Gothic Book",
fontface = "bold", vjust = -0.5
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/477552.html
