首页 > 解决方案 > 如何在熊猫中绘制另一列的一列“用法”

问题描述

我想将一个变量绘制为常数,total_cap,在这种情况下,并在 maxused_capacity 和 meanused_capacity 值上分层。本质上,我想要一个堆积条形图的视觉效果,但我不希望总数聚集在一起,每个站点的条形高度应该只是 Total_Cap 的值,其他两个值分层

示例 df:

SITE    Total_Cap   maxused_Cap meanused_Cap
 A         4            3            2
 B         8            7            4
 C         12           11           5
 D         16           13           10

我尝试了这段代码,但它只是在绘制条形图时将值相加

x= df4[['SITE','maxused_cap','Total_Cap']]
y= x.set_index('SITE')
z=y.groupby('SITE')
z.plot.bar(stacked=True).mean()
plt.show()

标签: pythonpandasmatplotlib

解决方案


IIUC 这可以通过缩放相对于的值来实现您想要实现的目标Total_Cap

df.set_index('SITE', inplace=True)
df[['maxused_Cap','meanused_Cap']].div(
    (df['maxused_Cap']+df['meanused_Cap'])/df['Total_Cap'],
    axis=0).plot.bar(stacked=True, figsize=(8,6));

出去:

堆叠高度


设置数据框

import pandas as pd
import io

t = '''
SITE    Total_Cap   maxused_Cap meanused_Cap
 A         4            3            2
 B         8            7            4
 C         12           11           5
 D         16           13           10'''

df = pd.read_csv(io.StringIO(t), sep='\s+')
df

出去:

  SITE  Total_Cap  maxused_Cap  meanused_Cap
0    A          4            3             2
1    B          8            7             4
2    C         12           11             5
3    D         16           13            10

推荐阅读