如何在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
相关产品推荐
相关产品推荐

