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

如何修改R语言dcurves包中决策曲线分析图的线型?

修改dcurves包决策曲线分析图线型的解决方法

你之前用scale_linetype_manual未生效的核心原因是:默认的plot.dca()输出的ggplot对象中,geom_line图层并未将**线型(linetype)**映射到任何变量,因此尺度设置没有作用目标。以下是两种可行的解决方法:

方法一:修改已有ggplot对象的图层映射

先通过plot()生成基础图,再调整图层的美学映射,添加线型绑定,最后自定义线型:

require(dcurves)
require(ggplot2)

# 生成DCA结果并绘制基础图
p <- 
  dca(cancer ~ cancerpredmarker, data = df_binary) %>%
  plot(smooth = TRUE, show_ggplot_code = TRUE)

# 为geom_line图层添加linetype到variable的映射(variable对应不同曲线:All/None/你的预测模型)
p$layers[[1]]$mapping <- aes_add(p$layers[[1]]$mapping, linetype = variable)

# 同时设置自定义颜色和线型
p + 
  scale_color_manual(values = c('black', 'grey', 'purple')) +
  scale_linetype_manual(values = c('solid', 'dashed', 'dotted')) # 顺序需与variable的水平对应

方法二:直接用ggplot代码重绘(更灵活)

利用plot()输出的show_ggplot_code=TRUE打印的代码,修改后自定义绘图:

require(dcurves)
require(ggplot2)

# 1. 计算DCA结果
dca_res <- dca(cancer ~ cancerpredmarker, data = df_binary)

# 2. 获取绘图用的数据框
plot_df <- attr(dca_res, "plot_df")

# 3. 自定义绘图,同时绑定颜色和线型映射
ggplot(plot_df, aes(x = threshold, y = net_benefit, color = variable, linetype = variable)) +
  geom_line(linewidth = 1) + # 保留原plot的线宽设置
  labs(x = "Threshold Probability", y = "Net Benefit") + # 原plot的轴标签
  theme_bw() + # 原plot的主题
  # 自定义颜色和线型,顺序需与plot_df$variable的水平对应
  scale_color_manual(values = c('black', 'grey', 'purple')) +
  scale_linetype_manual(values = c('solid', 'dashed', 'dotted'))

注意事项

  • 可以通过unique(plot_df$variable)查看variable的水平顺序,确保scale_*_manual的values顺序与之匹配
  • 支持的线型值包括:solid、dashed、dotted、dotdash、longdash、twodash等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 20:51:16