如何在ggplot2中将数据标签设置为百万美元格式(如$137.7M)
实现ggplot2数据标签的百万美元格式($X.XM)
你只需要修改geom_label中的label参数,使用scales包的格式化函数来添加美元符号和百万单位后缀M即可。具体操作如下:
修改核心代码
将原来的:
geom_label(aes(label = jordan, y = jordan/adjust), nudge_y = 0.7)
替换为:
geom_label(aes(label = scales::dollar(jordan, suffix = "M"), y = jordan/adjust), nudge_y = 0.7)
完整修改后的代码
# 输入数据 year <- c("2016", "2017", "2018", "2019", "2020", "2021", "2022") nike <- c(2.8, 3.1, 2.9, 3.1, 3.6, 4.7, 5.1) jordan <- c(137.7, 154.9, 142.8, 156.9, 180.5, 235.6, 255.0) data <- data.frame(year = year, nike = nike, jordan = jordan) adjust <- 50 # 用于调整第二Y轴比例 # 绘图并添加次级轴 library(ggplot2) colors <- c("Jordan Brand Revenue" = "red3", "Michael Jordan Earnings" = "black") # 图例颜色设置 ggplot(data, aes(x=year))+ geom_col(aes(y = nike, color="Jordan Brand Revenue"), lwd = 1 , fill = "red3") + geom_line(aes(y = jordan/adjust, color="Michael Jordan Earnings"), lwd = 1.5, group = 1)+ # 修改label格式为$X.XM geom_label(aes(label = scales::dollar(jordan, suffix = "M"), y = jordan/adjust), nudge_y = 0.7) + scale_y_continuous( name = "Jordan Brand Revenue (in $B)", labels = scales::dollar, breaks = seq(0,6,1), limits = c(0,6), sec.axis = sec_axis(~.*adjust, name = "Michael Jordan Earnings (in $M)", labels = scales::dollar, breaks= seq(0,300,50))) + theme_classic() + scale_color_manual(values=colors)+ theme(axis.title.x=element_blank(), panel.grid.major.y = element_line(), legend.title = element_blank(), legend.position = "top")
说明
scales::dollar()函数默认会添加美元符号,通过suffix = "M"参数可以在数值末尾加上百万单位标识;- 因为你的
jordan列数值本身就是以百万美元为单位的(比如137.7代表137.7百万美元),所以直接使用该函数就能得到$137.7M的格式。
内容的提问来源于stack exchange,提问作者Data and AI Nerd
相关产品推荐
相关产品推荐

