在python Pandas中从更多不同的数据帧绘制一个堆积条

时间:2017-12-07 10:53:31

标签: python pandas dataframe plot

我需要绘制这样的数据:

df1
id  value
ba1  4 
ba2  5
ba3  5

df2
   id     value
ba1, ba3  4
ba2       3
ba2, ba3  2
ba3       5

df3
     id       value
ba1, ba3       3
ba1, ba3, ba4  1
ba2            3
ba2, ba3       2
ba3            4
ba3, ba4       1

每个df具有相同的值总和,14。我认为这将是一个堆积条形图的良好解决方案,每df一个条形,其中值将以百分比表示。 但我不知道如何处理三个不同的数据帧。我在那里发现的一切都是来自一个df的更多数值列。 欢迎任何帮助。提前致谢。

所需的输出将是这样的: example但在X中将是dataframe的名称

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

import pandas as pd
import matplotlib.pyplot as plt


df1 = {'id': ['ba1', 'ba2', 'ba3'], 'value': [4,5,5]}
df1 = pd.DataFrame(data=df1)
df1.set_index('id', inplace=True)

df2 = {'id': ['ba1, ba3', 'ba2', 'ba2, ba3', 'ba3'], 'value': [4,3,2,5]}
df2 = pd.DataFrame(data=df2)
df2.set_index('id', inplace=True)

df3 = {'id': ['ba1, ba3', 'ba1, ba3, ba4', 'ba2', 'ba2, ba3', 'ba3', 'ba3,\
ba4'], 'value': [3,1,3,2,4,1]}
df3 = pd.DataFrame(data=df3)
df3.set_index('id', inplace=True)

ax = plt.gca()
df1.T.plot(kind='bar', stacked=True, ax=ax, width=0.05, position=0)
df2.T.plot(kind='bar', stacked=True, ax=ax, width=0.05, position=1)
df3.T.plot(kind='bar', stacked=True, ax=ax, width=0.05, position=2)
plt.show()