我需要绘制这样的数据:
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的名称
答案 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()