如何在熊猫中绘制另一列的“用法”

时间:2020-11-10 21:26:13

标签: python pandas matplotlib

在这种情况下,我想将一个变量绘制为常量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()

1 个答案:

答案 0 :(得分:0)

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));

出局:

stacked with caped height


设置数据框

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
相关问题