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

ggplot2绘制线性混合效应模型报错:连续值传入离散刻度

解决ggplot2中「Continuous value supplied to discrete scale」报错问题

问题根源

你的condition列是整数类型(从数据结构里的1L可以看出),R默认将整数视为连续变量,但你在geom_point中用它映射颜色,同时搭配了针对离散变量的scale_color_manual,两者类型不匹配导致报错。

解决方案

1. 将condition转换为因子类型

先把summStats_td_mean中的condition转为离散的因子类型,这样ggplot就能识别为分组变量:

# 基础R写法
summStats_td_mean$condition <- factor(summStats_td_mean$condition)

# 如果你用dplyr
# summStats_td_mean <- summStats_td_mean %>% mutate(condition = factor(condition))

2. 优化ggplot代码(可选但推荐)

不要在aes()里直接写data$column的形式(比如td_mean_pref_plot_groups$predicted),ggplot会自动从指定的数据源读取列,直接写列名更规范。

修改后的完整代码

# 转换变量类型
summStats_td_mean$condition <- factor(summStats_td_mean$condition)

# 绘制图形
p2 <- ggplot(td_mean_pref_plot_groups, aes(x, predicted, col = group)) +
      geom_line(size=1.5) +
      scale_color_manual(values = c("blue","red")) +
      geom_ribbon(aes(ymin=conf.low, ymax=conf.high, fill=group), alpha=.2, colour=NA) +
      scale_fill_manual(values = c("blue","red")) +
      geom_point(data=summStats_td_mean, aes(trial, mean, col = condition), size=2) +
      theme_bw() +
      xlab('Trial') +
      ylab('Prediction Error') +
      ylim(1,2.2) +
      ggtitle('TD learning about TD vs. TD \n learning about ASD') +
      theme(text=element_text(size=20),
            plot.title = element_text(hjust = 0.5),
            panel.border = element_blank())
p2

补充说明

之前相同代码未报错,大概率是因为当时的condition列已经是因子类型,或者数据导入时被自动识别为离散变量。这次的数据中condition是整数,所以触发了类型不匹配的问题。


内容的提问来源于stack exchange,提问作者Shannon Cahalan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:05:40