使用第二个数据框通过ggrepel为绘图添加标签报错解决
问题解决:ggrepel添加标签时"object 'comp' not found"报错
错误原因
你在ggplot()的全局美学映射里设置了group = comp,而geom_label_repel默认会继承全局的所有美学映射。但你的标签数据框comp_label_df里没有comp列,所以才会报找不到comp的错误——并不是它还在引用原数据框df,而是继承了全局的group映射要求。
解决方法
方法1:禁用美学继承
在geom_label_repel里添加inherit.aes = FALSE,让它完全使用自己定义的美学映射,不继承全局的:
ggplot(data = df, aes(x = date, y = one, group = comp)) + geom_line() + geom_label_repel( data = comp_label_df, aes(x = x, y = one, label = label), inherit.aes = FALSE # 关键:不继承全局美学 )
方法2:把分组映射移到geom_line里
既然分组只针对线条,没必要放在全局美学里,直接把group = comp放在geom_line的aes中,这样全局美学里没有group,geom_label_repel就不会继承这个要求了:
ggplot(data = df, aes(x = date, y = one)) + geom_line(aes(group = comp)) + # 分组只给线条用 geom_label_repel(data = comp_label_df, aes(x = x, y = one, label = label))
两种方法都能解决报错,并且在2023-01-08位置成功给两条线添加标签。
内容的提问来源于stack exchange,提问作者ixodid
相关产品推荐
相关产品推荐

