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

修复ggpubr::ggline连续标度传入离散值报错问题

问题描述

使用ggpubr包的ggline()函数绘制分面折线图时,触发运行错误:

Error: Discrete value supplied to continuous scale

已提前确认x轴映射的RecThematicity、y轴映射的yhat变量均为数值类型,数据集中变量类型识别正常,复现代码如下:

# 读取数据集
pd_RecThematicity <- read.csv("Lower_CRF_PDP/pd_RecThematicity.csv")
# 绘图
ptg_RecThematicity<- ggline(pd_RecThematicity, 
                            x="RecThematicity", 
                            y="yhat",
                            facet.by="variant")+
  scale_x_continuous(name = "Recipient Thematicity")+
  scale_y_continuous(name = "Predicted odd of variants",
                     labels = c("0","0.5", "1"),
                     limits = c(0,1), 
                     breaks = c(0,0.5,1))+
  geom_smooth() +
  theme_classic2(base_size=12, base_family="Arial")
ggsave("pdp_RecThematicity.png",ptg_RecThematicity, width=6, height=4, units="in", dpi = 1000, type = "cairo")
报错原因

核心原因是ggline()函数的默认参数逻辑和后续手动添加的连续标度冲突:

  • ggline()默认设计用于绘制分类x轴的分组折线图,默认参数numeric.x.axis = FALSE,会自动将传入的x轴数值型变量转换为因子(离散类型),默认加载离散型x轴标度。
  • 后续代码手动添加scale_x_continuous()要求x轴使用连续型标度,此时x轴映射的变量已经被转换为离散因子,就会触发“离散值提供给连续标度”的报错。
    注:该问题和y轴变量、分面变量无关,即使x、y原始变量均为数值型,只要触发了上述默认转换逻辑就会报错。
解决方法
  • 核心修复:调用ggline()时显式添加参数numeric.x.axis = TRUE,告知函数x轴为连续数值型,不要自动做离散因子转换,从根源避免标度冲突。
    修改后的核心绘图代码如下:
    ptg_RecThematicity<- ggline(pd_RecThematicity, 
                                x="RecThematicity", 
                                y="yhat",
                                facet.by="variant",
                                numeric.x.axis = TRUE # 新增该参数
                                )+
      scale_x_continuous(name = "Recipient Thematicity")+
      scale_y_continuous(name = "Predicted odd of variants",
                         labels = c("0","0.5", "1"),
                         limits = c(0,1), 
                         breaks = c(0,0.5,1))+
      geom_smooth() +
      theme_classic2(base_size=12, base_family="Arial")
    
  • 可选优化:ggline()本身会自带分组连线逻辑,若需要的是拟合平滑线,可以保留geom_smooth(),若需要原始值连线可删除冗余的平滑层,避免图形元素重叠。

内容的提问来源于stack exchange,提问作者nick.yili9393

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:06:43