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

如何在ggplot绘制的每条线段两端显示带$符号的数值计数?

给ggplot折线图两端添加带$符号的数值标签

要在每条折线的首尾显示带$的GDP数值,你可以按以下步骤修改代码:

步骤1:筛选首尾年份的数据

首先从数据集中提取每个国家起始年份和结束年份对应的GDP数据,这部分数据用来生成标签:

# 加载必要工具包,假设数据集名为gapminder
library(ggplot2)
library(dplyr)

# 筛选每个国家的首尾年份数据,并格式化GDP为带$的金额格式
label_data <- gapminder %>%
  group_by(country) %>%
  filter(year == min(year) | year == max(year)) %>%
  mutate(gdp_label = paste0("$", scales::dollar_format(decimal.mark = ".", big.mark = ",")(gdpPercap))) %>%
  ungroup()

步骤2:修改ggplot代码添加标签

在原代码基础上,加入geom_text层,使用筛选好的label_data绘制标签,同时调整位置避免遮挡数据点:

ggplot(gapminder, aes(x = year, y = gdpPercap, color = country)) + 
  geom_line(size = 2) + 
  geom_point(size = 4, alpha = 0.7) +
  # 添加首尾数值标签
  geom_text(data = label_data, aes(label = gdp_label), 
            vjust = -1.2, size = 4, fontface = "bold") +
  theme_bw() + 
  labs(title = "GDP对比", 
       subtitle = "1962-2022年人均GDP变化", 
       caption = "数据来源:Gapminder数据集") + 
  theme(axis.ticks = element_blank(), 
        axis.text.y = element_blank(),
        panel.grid.minor = element_blank(), 
        panel.border = element_blank(), 
        panel.grid.major.x = element_blank(), 
        axis.title = element_blank()) +
  scale_colour_discrete(name = "国家", 
                        type = c("light green", "orange", "sky blue", "pink")) + 
  xlim(1960, 2003)

关键说明:

  • scales::dollar_format()用来将GDP数值转为千分位分隔的金额样式,搭配paste0("$", ...)添加美元符号
  • vjust = -1.2让标签显示在数据点上方,避免遮挡
  • 修正了原标题的拼写错误,同时将所有文本替换为中文表述

修改后的图表会在每条折线的起始、结束位置,清晰显示对应年份的人均GDP数值,格式为带$符号的标准金额样式。

内容的提问来源于stack exchange,提问作者Rizzle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:55:24