You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:53:19