【发布时间】:2022-01-03 16:28:10
【问题描述】:
我在数据框中有一个 0,1 的列表。如何在 pandas 或 matplotlib 中绘制一定百分比的条形图,这将在图例 1,0 和 1,0 百分比的书面注释中与整个列表进行比较?
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
list_1 = [1,0,1,1,1,0,0,1,0,1,1,1,0,0,1,0,1,1,1,0,0,1,0,1,1,1,0,0,1,0,1,1,1,0,0,]
list_2 = [1,1,1,1,1,0,0,1,1,1,1,1,0,0,1,0,1,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,1,1,0,]
list_3 = [1,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,0,0,]
df1 = pd.DataFrame({'Data1': list_1,'Data2': list_2,'Data3': list_3})
df1 = df1.mean()
df1.columns = ['1']
df2 = pd.DataFrame(1-df1)
df2.columns = ['0']
df1 = pd.DataFrame(df1)
df = pd.concat([df1,df2], axis=1)
df.plot( kind='barh',stacked = True,mark_right = True) # this is ok
plt.text(1,2,'%', va = 'center', ha = 'center')
plt.show()
但是对于 3 个列表,我会得到 1 和 0 的百分比,所以是这样的:
【问题讨论】:
标签: python pandas matplotlib bar-chart stacked-chart