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

ggplot2的geom_smooth函数异常?是函数问题还是系统问题?

问题描述

一直使用机构的R/RStudio虚拟计算版本,之前用ggplot2从未出现问题,但从今日起,绘制包含geom_smooth的图形时,拟合线完全错误。即使运行官方示例代码,问题仍复现:

require(tidyverse)

ggplot(mpg, aes(displ, hwy)) +
  geom_point() +
  geom_smooth(method = lm, se = FALSE)

ggplot2 geom_smooth拟合线异常

当前环境版本:R 4.3.1,RStudio 2023.6.1.524,ggplot2 3.4.3。

编辑1:附上sessionInfo()输出:

R version 4.3.1 (2023-06-16)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 20.04.6 LTS

Matrix products: default
BLAS/LAPACK: /opt/OpenBLAS/lib/libopenblasp-r0.3.3.so;  LAPACK version 3.8.0

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8   
 [6] LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

time zone: America/Chicago
tzcode source: system (glibc)

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] ggprism_1.0.4      neuroCombat_1.0.13 broom_1.0.5        lubridate_1.9.2    forcats_1.0.0      stringr_1.5.0      dplyr_1.1.2       
 [8] purrr_1.0.2        readr_2.1.4        tidyr_1.3.0        tibble_3.2.1       ggplot2_3.4.3      tidyverse_2.0.0    emmeans_1.8.8     

loaded via a namespace (and not attached):
 [1] tidyselect_1.2.0    farver_2.1.1        fastmap_1.1.1       TH.data_1.1-2       digest_0.6.33       rpart_4.1.19       
 [7] estimability_1.4.1  timechange_0.2.0    lifecycle_1.0.3     cluster_2.1.4       survival_3.5-5      magrittr_2.0.3     
[13] compiler_4.3.1      rlang_1.1.1         Hmisc_5.1-0         tools_4.3.1         utf8_1.2.3          data.table_1.14.8  
[19] knitr_1.43          labeling_0.4.2      htmlwidgets_1.6.2   plyr_1.8.8          multcomp_1.4-25     abind_1.4-5        
[25] BiocParallel_1.34.2 foreign_0.8-84      withr_2.5.0         nnet_7.3-19         grid_4.3.1          googledrive_2.1.1  
[31] fansi_1.0.4         xtable_1.8-4        colorspace_2.1-0    scales_1.2.1        MASS_7.3-60         cli_3.6.1          
[37] mvtnorm_1.2-3       rmarkdown_2.24      generics_0.1.3      rstudioapi_0.15.0   modelr_0.1.11       tzdb_0.4.0         
[43] DBI_1.1.3           splines_4.3.1       parallel_4.3.1      cellranger_1.1.0    matrixStats_1.0.0   base64enc_0.1-3    
[49] vctrs_0.6.3         Matrix_1.6-1        sandwich_3.0-2      carData_3.0-5       car_3.1-2           hms_1.1.3          
[55] rstatix_0.7.2       Formula_1.2-5       htmlTable_2.4.1     glue_1.6.2          codetools_0.2-19    stringi_1.7.12     
[61] gtable_0.3.3        sensemakr_0.1.4     munsell_0.5.0       pillar_1.9.0        htmltools_0.5.6     R6_2.5.1           
[67] dbplyr_2.3.3        evaluate_0.21       lattice_0.21-8      haven_2.5.3         backports_1.4.1     googlesheets4_1.1.1
[73] gargle_1.5.2        Rcpp_1.0.11         nlme_3.1-162        gridExtra_2.3       checkmate_2.2.0     mgcv_1.8-42        
[79] xfun_0.40           fs_1.6.3            zoo_1.8-12          pkgconfig_2.0.3    
可能原因与修复方案

从环境信息和问题表现来看,核心原因大概率是BLAS/LAPACK库的兼容性问题——你当前使用的OpenBLAS 0.3.3版本与R 4.3.x结合时,可能导致线性回归计算异常,进而让geom_smooth(method=lm)的拟合线出错。

可以按以下步骤尝试修复:

  1. 临时切换R使用内置BLAS/LAPACK
    在R中运行以下代码,重启R后再测试绘图:
    Sys.setenv("R_USE_BLAS" = "R")
    Sys.setenv("R_USE_LAPACK" = "R")
    
  2. 升级OpenBLAS版本
    联系机构虚拟计算环境管理员,将OpenBLAS升级到0.3.20以上版本,新版本修复了不少与R 4.x的兼容性问题。
  3. 排除第三方包干扰
    先卸载ggprism包再测试,部分ggplot2扩展包可能干扰geom_smooth的计算逻辑:
    remove.packages("ggprism")
    # 重启R后运行示例代码
    
  4. 重装ggplot2及依赖
    如果以上方法无效,完全卸载并重装ggplot2和tidyverse:
    remove.packages(c("ggplot2", "tidyverse"))
    install.packages("tidyverse", dependencies = TRUE)
    

另外,可先单独运行线性回归验证计算是否正常:

model <- lm(hwy ~ displ, data = mpg)
summary(model)

如果输出的系数明显不合理(比如斜率为正),即可确认是线性代数库问题,优先处理BLAS/LAPACK配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:50:40