如何在ggplot2中按authors变量给点着色,基于authorsYear显示图例?
解决方案
要实现按作者统一着色,但图例显示authorsYear内容的需求,你可以通过手动指定颜色映射的方式来实现,具体步骤如下:
步骤1:创建作者与颜色的映射表
先基于唯一作者生成对应的颜色(使用ggplot默认的离散配色即可):
# 加载所需包 library(ggplot2) library(scales) # 生成作者-颜色映射 author_colors <- setNames(hue_pal()(length(unique(df.sample$authors))), unique(df.sample$authors))
步骤2:创建authorsYear与颜色的映射表
将每个authorsYear对应到其所属作者的颜色:
year_author_colors <- setNames(author_colors[df.sample$authors], df.sample$authorsYear)
步骤3:绘制图形并应用颜色映射
在aes中将color映射到authorsYear,再用scale_color_manual指定预先准备好的颜色值:
ggplot(df.sample, aes(x = year, y = value, color = authorsYear)) + geom_point(size = 3) + # 可调整点大小提升可读性 scale_color_manual(values = year_author_colors) + labs(x = "年份", y = "数值", color = "研究信息") # 可自定义图例标题
效果说明
- 同一作者的所有数据点会使用相同颜色
- 图例将显示所有
authorsYear条目,每个条目颜色与其对应作者一致
内容的提问来源于stack exchange,提问作者SteveMcManaman
相关产品推荐
相关产品推荐

