Matplotlib,限制图表中的条形数量

Posted

技术标签:

【中文标题】Matplotlib,限制图表中的条形数量【英文标题】:Matplotlib, limiting number of bars in chart 【发布时间】:2020-02-28 02:35:31 【问题描述】:

如何截断条形图以仅显示前 10 个条形图,而忽略其余的条形图? 它所绘制的数组将根据所选的特征而具有不同的大小,但通常会太多而无法有效显示。所以我想设置一个最大值。

nFeatures = dataSample.select_dtypes(include=['int64', 'float64']).columns
cFeatures = dataSample.select_dtypes(include=['category']).columns

ohe = (mainPipe.named_steps['preprocessor']
         .named_transformers_['cat']
         .named_steps['onehot'])
feature_names = ohe.get_feature_names(input_features=cFeatures)
feature_names = np.r_[feature_names, nFeatures]

tree_feature_importances = (
    mainPipe.named_steps['classifier'].feature_importances_)
sorted_idx = tree_feature_importances.argsort()

y_ticks = np.arange(0, len(feature_names))
fig, ax = plt.subplots()
ax.barh(y_ticks, tree_feature_importances[sorted_idx])
ax.set_yticklabels(feature_names[sorted_idx])
ax.set_yticks(y_ticks)
ax.autoscale(tight=True)
ax.set_title("Random Forest Feature Importances")
fig.tight_layout()
plt.show()

【问题讨论】:

***.com/questions/38338396/… @Kaushal28 看到了,我尝试了 [:10] 和 .head(10) 但都没有成功,但也有可能我不知道正确的传递位置。 ax.barh(y_ticks[:10], tree_feature_importances[sorted_idx][:10]) 如果两者都是 python/numpy 列表 那一半有效,它给了我左侧 10 个标签的列表,但没有显示条形。我尝试添加 ax.set_yticklabels(feature_names[sorted_idx][:10]) ax.set_yticks(y_ticks[:10]) 但没有帮助。 【参考方案1】:

使用 iloc。

df.iloc[0:10].plot.bar()

【讨论】:

以上是关于Matplotlib,限制图表中的条形数量的主要内容,如果未能解决你的问题,请参考以下文章

用matplotlib绘制带误差的条形图及中英文字体设置

使用 MatPlotLib 将多个条形图绘制成图表

matplotlib 高级条形图

Matplotlib图表上输出中文(汉字)减号问题

为什么索引显示图表而不是国家?使用Matplotlib水平条形图

数据可视化实例(十五):有序条形图(matplotlib,pandas)