如何修改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函数源码
如果需要长期使用自定义样式,可以复制函数源码并修改参考线的绘制参数:
- 导出函数源码到自定义对象:
my_calibrate.plot <- gbm::calibration.plot
- 编辑函数,找到绘制参考线的代码段(通常是
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值
- 调用修改后的自定义函数:
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
相关产品推荐
相关产品推荐

