如何在R中按重要性从高到低重新排序随机森林变量条形图?
解决Random Forest变量重要性条形图排序问题
要让最重要的变量排在图顶部、最不重要的在底部,核心是让y轴的Property变量按X0(相对重要性)的降序排列,下面给你两种简单可行的方法:
方法1:直接在ggplot中调整顺序
借助forcats包的fct_reorder函数,直接在映射里指定排序规则(该包属于tidyverse家族,通常和ggplot配套使用,没装的话先运行install.packages("forcats")安装):
library(forcats) library(ggplot2) # 建议把绘图对象和数据框用不同名字,避免混淆 RI_plot <- ggplot(RI, aes(x = X0, y = fct_reorder(Property, X0, .desc = TRUE))) + geom_col() + labs(x = "Relative Importance", y = "Variable") RI_plot
fct_reorder(Property, X0, .desc = TRUE)的作用是将Property转为因子,并按照X0从大到小的顺序排列因子水平,这样ggplot就会把重要性最高的变量放在y轴顶部。
方法2:先预处理数据框的因子顺序
如果你习惯先整理数据再绘图,可以先修改数据框里的Property列:
# 把Property转为因子,按X0降序指定水平顺序 RI$Property <- factor(RI$Property, levels = RI$Property[order(RI$X0, decreasing = TRUE)]) # 再生成图表 RI_plot <- ggplot(RI, aes(x = X0, y = Property)) + geom_col() + labs(x = "Relative Importance", y = "Variable") RI_plot
这里用order(RI$X0, decreasing = TRUE)拿到X0从大到小的索引,再用这个索引提取对应的Property值作为因子水平,绘图时就会自动按这个顺序排列。
内容的提问来源于stack exchange,提问作者Erioderma
相关产品推荐
相关产品推荐

