tidymodels中autoplot生成的模型结果对比图如何修改x轴刻度标签?
你调用scale_x_discrete()不生效的核心原因是:当autoplot()的select_best = TRUE参数开启时,生成的ggplot图表的x轴变量为模型按指定指标排序的排名,属于连续数值型变量,因此离散轴调整函数scale_x_discrete()无法匹配生效。
解决方法1:用连续轴调整函数直接修改标签
如果要保留原有按排名排序的x轴结构,直接调用scale_x_continuous()指定breaks和labels参数即可,示例代码如下:
autoplot( grid_results, rank_metric = "rmse", # 模型排序依据指标 metric = "rmse", # 可视化的评估指标 select_best = TRUE # 每个工作流仅展示最优结果点 ) + scale_x_continuous( breaks = 1:12, # 12个模型对应1到12的排名刻度位置 labels = rep("example", 12) # 替换为你自定义的12个标签向量即可 )
解决方法2:自定义绘图直接使用工作流名称作为x轴
如果你需要直接用模型工作流名称作为x轴刻度,也可以提取绘图原始数据自行绘制,灵活性更高:
library(ggplot2) # 提取autoplot生成的原始绘图数据 plot_data <- autoplot( grid_results, rank_metric = "rmse", metric = "rmse", select_best = TRUE )$data # 自定义绘图,按RMSE从小到大排序 ggplot(plot_data, aes(x = reorder(wflow_id, mean), y = mean)) + geom_point(size = 2) + geom_errorbar(aes(ymin = mean - std_err, ymax = mean + std_err), width = 0.2) + coord_flip() + # 翻转坐标轴,适配较长的工作流名称展示 labs(x = "模型工作流", y = "RMSE")
内容的提问来源于stack exchange,提问作者S Front
相关产品推荐
相关产品推荐

