如何为ggplot2的geom_function图层添加自定义名称的图例
要为geom_function生成自定义颜色、线型的图例,核心逻辑是:ggplot2的图例仅基于aes()内的映射生成,你之前把颜色、线型写在aes()外属于固定全局样式,不会触发图例生成逻辑,调整方案如下:
修改后可直接运行的代码
# 示例自定义三个函数,可替换为你自己的函数定义 fun1 <- function(x) sin(x * pi) fun2 <- function(x) cos(x * pi) fun3 <- function(x) x ^ 2 ggplot(data = data.frame(x = seq(0, 1, by = 0.01)), mapping = aes(x = x)) + geom_function(fun = fun1, aes(color = "fun1", linetype = "fun1")) + geom_function(fun = fun2, aes(color = "fun2", linetype = "fun2")) + geom_function(fun = fun3, aes(color = "fun3", linetype = "fun3")) + # 自定义颜色映射,name参数为图例整体名称 scale_color_manual(name = "函数类型", values = c("fun1" = "red", "fun2" = "dark green", "fun3" = "blue")) + # 自定义线型映射,name需和上面scale_color_manual的name完全一致,两者会合并为同一个图例 scale_linetype_manual(name = "函数类型", values = c("fun1" = "11", "fun2" = "solid", "fun3" = "dashed"))
自定义调整方法
- 要修改单条曲线的图例显示名称,直接修改
aes()中color、linetype对应的字符串即可,只要和后续scale配置里的键名一一对应即可 - 要修改图例整体的名称,直接修改两个
scale_*_manual里的name参数值即可 - 如果不需要同时展示颜色和线型的图例,删掉对应
aes()内的映射和对应的scale配置即可
内容的提问来源于stack exchange,提问作者An Ignorant Wanderer
相关产品推荐
相关产品推荐

