You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R ggplot2设置palette绘图报attempt to apply non-function错误

报错原因

这个错误的核心诱因是ggplot2原生的scale_fill_continuous()函数没有设计palette形参。
你传入palette = "Greens"时,R不会第一时间抛出“未使用参数”的报错,反而会把这个参数传递给色阶构建的内部R6对象,后续生成配色时内部逻辑会尝试将palette对应的取值(也就是字符串"Greens")作为函数调用生成颜色向量——字符串本身不是可执行的函数对象,就会抛出你看到的attempt to apply non-function错误。
你测试时去掉palette参数,scale_fill_continuous()会调用默认的蓝-浅蓝连续渐变规则生成配色,不需要调用额外传入的palette对象,因此代码可以正常运行,和你的排查结果完全吻合。

解决方案

你需要使用支持连续变量、且接受palette参数的填充标度函数来调用"Greens"配色,任选以下一种方式修改代码即可:

  • 最简便的通用方案:替换为Brewer连续色专用标度
    把原代码里的scale_fill_continuous(palette = "Greens")替换为:
    scale_fill_distiller(palette = "Greens")
    
    scale_fill_distiller()是ggplot2内置专门为连续变量适配RColorBrewer色板的函数,原生支持palette参数传入色板名称,"Greens"属于该函数支持的标准色板,不需要额外加载其他包。
  • 高版本ggplot2适配方案(3.5.0及以上):
    不需要替换标度函数,直接给scale_fill_continuous()传type参数指定配色来源即可:
    scale_fill_continuous(type = \(x) grDevices::hcl.colors(x, "Greens"))
    

注意:不要误用离散色标:scale_fill_brewer()仅支持离散型填充变量,直接用在连续的Avg_Math_Prof字段上会触发离散/连续变量匹配错误。


内容的提问来源于stack exchange,提问作者Laura Edwards

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 07:18:24