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

RMS Predict绘图X/Y轴翻转问题:coord_flip无效时的解决方法

解决rms包Cox模型预测图轴交换问题

首先明确:coord_flip()是ggplot2专属函数,而rms包默认采用R基础绘图系统,两者不兼容,直接调用该函数自然无效。以下是两种可行解决办法:

方案1:利用rms绘图参数直接调整

rms的plot.Predict函数默认采用水平布局(Y轴为分组、X轴为风险值),通过设置horizontal=FALSE参数可直接切换为垂直布局,实现X轴为分组、Y轴为风险值的需求:

library(rms)
# 示例:构建Cox模型并生成预测对象
data(lung)
lung$sex <- factor(lung$sex, levels = c(1,2), labels = c("Male", "Female"))
cph_model <- cph(Surv(time, status) ~ sex, data = lung, x = TRUE, y = TRUE)
pred_obj <- Predict(cph_model, sex, fun = exp) # fun=exp将线性预测值转换为风险比

# 默认水平绘图(Y=分组, X=风险值)
plot(pred_obj)
# 切换为垂直布局(X=分组, Y=风险值)
plot(pred_obj, horizontal = FALSE)

方案2:提取预测数据用ggplot2重绘(更灵活)

如果需要自定义图表样式,可将Predict对象转为数据框,再用ggplot2重新绘制,完全控制轴的位置和样式:

library(ggplot2)
# 转换预测对象为数据框
pred_df <- as.data.frame(pred_obj)

# 自定义绘图
ggplot(pred_df, aes(x = sex, y = yhat)) +
  geom_point(size = 3) +
  geom_errorbar(aes(ymin = lower, ymax = upper), width = 0.2) +
  labs(x = "Group", y = "Hazard Rate", title = "Predicted Hazard Rates by Group") +
  theme_bw()

注意事项

  • fun = exp用于将Cox模型的线性预测值(对数风险比)转换为风险比,若你的模型已完成转换,可省略该参数。
  • 若分组变量为连续型,可根据需求调整ggplot的映射逻辑。

内容的提问来源于stack exchange,提问作者blake.struthers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:21:07