如何在 pandas df 中仅绘制堆积条形图中的前 n 个最高值?

How to only plot the top n highest values in stacked bar chart in a pandas df?

我有一个 df 看起来像:

  CD1  CD2  CD3   ...  FG1  FG2
0 3.8  2.9  0     ...  0.1  0.1
1 0.1  0    4.1   ...  5.2  0
# 35 columns and 2 rows

然后我使用以下方法绘制堆积条形图:

colors = plt.cm.jet(np.linspace(0, 1, 35))
df3.plot(kind='barh',stacked=True, figsize=(15,10),color=colors, width=0.08)

但我的问题是这会绘制所有 35 列,但是我只想绘制具有最高值的 n 列,例如只为第 0 行绘制 CD1 和 CD2,为第 1 行绘制 CD3 和 FG1...

  CD1  CD2  CD3   ...  FG1  FG2
0 3.8  2.9  -     ...  -     -
1  -    -   4.1   ...  5.2   -

有办法吗?

如果我明白您的要求...看来您可以通过让 max for each column followed by nlargest 选择前 10 列来完成此操作:

df.max().nlargest(10)

结果应该是一个按列名索引的系列,因此绘制该数据应该很容易。