y轴python上的标签重叠/拥挤

时间:2020-06-01 20:15:47

标签: python-3.x matplotlib machine-learning random-forest scrum

我很想完成此工作,以便明天向项目所有者进行演示。我们是德国的一小群经济系学生,他们试图弄清楚使用python进行机器学习的方法。我们建立了一个随机森林分类器,不顾一切地在整洁的图中显示估计量的重要特征。通过应用google搜索,我们想到了以下解决方案,可以解决上述问题,但是由于y轴上的标签重叠,我们感到不满意。我们使用的代码如下:

feature_importances = clf.best_estimator_.feature_importances_
feature_importances = 100 * (feature_importances / feature_importances.max())
sorted_idx = np.argsort(feature_importances)

pos = np.arange(sorted_idx.shape[0])
plt.barh(pos, feature_importances[sorted_idx], align='center', height=0.8)
plt.yticks(pos, df_year_four.columns[sorted_idx])
plt.show()

由于隐私原因,我可以这样说:y轴上的要素名称重叠(大约有30个)。我一直在寻找matplotlib的文档,以了解自己如何执行此操作,但是不幸的是,我找不到任何有用的信息。似乎训练和测试模型比理解matplotlib和创建图更容易:D

非常感谢您的帮助和抽出宝贵的时间。

3 个答案:

答案 0 :(得分:0)

您正在使用np.argsort,它将返回具有许多索引的numpy数组。而且您将该数组用作Y轴的标签,因此标签重叠。

我的建议是为 sorted_idx 使用索引,例如

plt.yticks(pos, df_year_four.columns[sorted_idx[0]])

这只会绘制1个标签。

答案 1 :(得分:0)

好了! 正如我们在德国所说的“ Geistesblitz”! (精神减轻) 看到第三行的变量feature_importances吗?添加feature_importnaces[:-15] 以仅查看功能的上半部分并放宽y轴。是!!!这样做很好,因为有些重要功能较少。

答案 2 :(得分:0)

我看到了您的解决方案,我只想在此添加此链接以说明原因:How to change spacing between ticks in matplotlib?

刻度标签之间的间距专门由轴上刻度之间的间距确定。因此,在给定的刻度标签之间获取更多空间的唯一方法是使轴更大。

我链接的问题表明,通过使图形足够大,您的轴标签自然会间隔得更好。