如何在ggplot2中添加来自新data.frame的自定义线条?
解决ggplot2添加自定义线条时“object 'method' not found”的错误
嘿,我来帮你搞定这个问题!你遇到的错误其实是ggplot2的全局美学映射继承导致的——你在初始的ggplot()里设置了aes(group = method, colour = method),这个映射会被后续所有的geom层自动继承,但你的myAdditionalData里并没有method这个变量,所以ggplot找不到它就报错了。
下面给你两种简单的解决方案:
方法1:禁用美学映射继承
直接在geom_line里加上inherit.aes = FALSE,这样这个线条层就不会继承全局的group和colour映射,只用你自己定义的x和y:
# 添加自定义线条,设置颜色为红色、虚线样式 p + geom_line(data = myAdditionalData, aes(x = x, y = y), inherit.aes = FALSE, color = "red", linetype = "dashed")
方法2:局部覆盖group和colour映射
如果你想让这条自定义线条出现在图例里,可以在geom_line的aes里重新定义group(设为1,因为只有一条线)和colour(自定义名称):
# 添加带图例的自定义线条 p + geom_line(data = myAdditionalData, aes(x = x, y = y, group = 1, color = "Custom Line")) + scale_color_discrete(name = "Method") # 调整图例标题
另外补充一下:其实你不需要纠结是否必须新建data.frame——如果你的自定义线条是简单的函数(比如线性、对数函数),也可以用stat_function()直接添加,但你的情况是已有一组x-y数据,新建data.frame是完全合理的做法~
测试一下上面的代码,就能在你的原有图表上成功叠加自定义线条啦!
内容的提问来源于stack exchange,提问作者Kira
相关产品推荐
相关产品推荐

