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

如何修改gbm包calibration.plot函数的绘图线型?

解决gbm::calibration.plot线型不生效的问题

你遇到的问题是因为calibration.plot的line.par参数仅控制校准拟合线的样式,而默认显示的对角线参考线(y=x)是函数内部硬编码绘制的,不受line.par影响。下面提供两种可行的解决办法:

方法一:手动添加自定义参考线

先关闭函数自带的参考线,再用lines()手动绘制符合要求的线型:

library(gbm)
set.seed(123)
data <- data.frame(y = sample(c(0,1), size = 100, replace = TRUE),
                   pred = runif(100, min = 0, max = 1))

# 绘制校准图,关闭自带参考线
calibrate.plot(data$y, data$pred, 
               distribution = 'bernoulli',  # 修正拼写:原代码少了一个l
               replace = TRUE, 
               shade.col = NA, 
               line.par = list(col ="black", lty= 2),
               ref.line = FALSE)  # 关闭默认参考线

# 手动添加自定义线型的参考线
lines(c(0,1), c(0,1), col = "black", lty = 1)  # 可根据需求修改lty值

方法二:修改calibration.plot函数源码

如果需要长期使用自定义样式,可以复制函数源码并修改参考线的绘制参数:

  1. 导出函数源码到自定义对象:
my_calibrate.plot <- gbm::calibration.plot
  1. 编辑函数,找到绘制参考线的代码段(通常是lines(c(0,1),c(0,1),...)),修改其中的lty参数。比如将原代码中类似:
lines(c(0, 1), c(0, 1), col = "gray", lty = 1)

的行,改成你需要的样式:

lines(c(0, 1), c(0, 1), col = "black", lty = 1)  # 自定义lty值
  1. 调用修改后的自定义函数:
my_calibrate.plot(data$y, data$pred, 
                  distribution = 'bernoulli', 
                  replace = TRUE, 
                  shade.col = NA, 
                  line.par = list(col ="black", lty= 2))

另外注意原代码中distribution参数的拼写错误,正确应为'bernoulli',这个错误可能会影响函数正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:00:06