如何调整pec对象绘图的图例位置?能否用ggplot绘制预测误差曲线?
调整pec对象绘图的图例位置
pec包自带的plot方法的legend参数仅接受逻辑值或列表:传TRUE时图例默认放在绘图区中间,传自定义参数需要封装为列表,列表内的参数会直接传递给R基础绘图的legend()函数,可同时控制位置、字号、边框等属性。
正确示例代码:
# 图例放在右上角,字号缩小为0.7,去掉边框 plot(brier, legend = list( x = "topright", cex = 0.7, bty = "n" ))
如果需要更精细的位置控制,也可以用坐标指定位置,比如x = 0.6, y = 0.8,坐标取值范围为0到1,对应绘图区的左下角到右上角。
使用ggplot2绘制预测误差曲线
可以实现,只需要从pec结果对象中提取对应数据,整理为长格式即可绘图,自定义灵活度远高于自带的plot方法,示例代码如下:
# 加载需要的包 library(ggplot2) library(tidyr) library(dplyr) # 提取训练集预测误差与对应时间点,如需交叉验证误差则替换AppErr为CrossValErr brier_df <- data.frame( time = brier$time, t(do.call(cbind, brier$AppErr)) ) # 转换为长表格式适配ggplot brier_long <- pivot_longer(brier_df, cols = -time, names_to = "模型名称", values_to = "Brier预测误差") # 绘图 ggplot(brier_long, aes(x = time, y = `Brier预测误差`, color = `模型名称`)) + geom_line(linewidth = 1) + theme_bw() + labs(x = "生存时间", y = "Brier预测误差值") + theme( legend.position = "top", # 可自由调整图例位置,如"bottom"、"none"或者坐标c(0.8,0.8) legend.title = element_blank() )
内容的提问来源于stack exchange,提问作者Israel
相关产品推荐
相关产品推荐

