首页 > 解决方案 > 无法通过重新排序重新排序 R ggplot geom_bar() 函数中的条形图

问题描述

我正在尝试为我的随机森林分类器模型绘制一个变量重要性,并且从经过训练的模型中,我将能够为我的 7 个类中的每一个类获得所有 105 个特征变量的重要性分数。所以我现在想将它们绘制为简单的条形图:每个条表示一个特征变量(字符变量),条的高度将是它的重要性分数(数字),然后我可以使用 facet 来查看每个类,所有特征的重要性分数如何在每个类别中排名。

我希望每个 Class facet plot 将特征的重要性从高到低排列,我认为这是我的代码搞砸的地方。我认为 reorder () 在我面对它时不起作用。有没有什么办法解决这一问题?

然后,一旦我可以得到该图,为简单起见,我可能需要第二张图来显示每个构面图中的前 20 个特征。

我认为核心问题在我的数据中,特征 A 可能对 A 类非常重要,但对 B 类来说不是那么重要,所以让 R 感到困惑?非常感谢一些直观的解释。

真实数据(对不起,wpnt 列表太长了,所以我把它放在谷歌驱动器上)

https://drive.google.com/file/d/18-1CWvALU-ILAHIFWsz8jjcvsXnXD0WQ/view?usp=sharing

编码:

ggplot(importance_tbl,aes(x=reorder(Feature,-Importance) ,y=Importance)) +
  geom_col()+
  facet_wrap(.~Class)+
  coord_flip() +
  scale_fill_grey() +
  scale_y_discrete(guide = guide_axis(n.dodge=3))+
  theme_bw()

您会看到输出,x 轴标签没有按重要性排序,而是分散

在此处输入图像描述

标签: rggplot2random-forestgeom-bar

解决方案


推荐阅读