1. Python基于表格数据绘制简单柱状图
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({'x': ['A', 'B', 'C', 'D', 'E'],
'y': [50, 30, 70, 80, 60]})
plt.bar(df['x'], df['y'], align='center', width=0.5, color='b', label='data')
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.title('Bar chart')
plt.legend()
plt.show()
![](https://i-blog.csdnimg.cn/blog_migrate/9c9ba4e36df6031404e809fc871ccd5b.png)
2. Python基于表格数据绘制堆积柱状图
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({'x': ['A', 'B', 'C', 'D', 'E'],
'y1': [50, 30, 70, 80, 60],
'y2': [20, 40, 10, 50, 30]})
plt.bar(df['x'], df['y1'], align='center', width=0.5, color='b', label='Series 1')
plt.bar(df['x'], df['y2'], bottom=df['y1'], align='center', width=0.5, color='g', label='Series 2')
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.title('Stacked Bar Chart')
plt.legend()
plt.show()
![](https://i-blog.csdnimg.cn/blog_migrate/959f608b5259eedc119e6c6bd312c6e6.png)
3. Python基表格数据绘制分组柱状图
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df = pd.DataFrame({
'group': ['G1', 'G2', 'G3', 'G4', 'G5'],
'men_means': [20, 35, 30, 35, 27],
'women_means': [25, 32, 34, 20, 25]
})
ind = np.arange(len(df))
width = 0.35
fig, ax = plt.subplots()
rects1 = ax.bar(ind, df['men_means'], width, color='r')
rects2 = ax.bar(ind + width, df['women_means'], width, color='y')
ax.set_xticks(ind + width / 2)
ax.set_xticklabels(df['group'])
ax.legend((rects1[0], rects2[0]), ('Men', 'Women'))
ax.set_xlabel('Groups')
ax.set_ylabel('Scores')
plt.show()
![](https://i-blog.csdnimg.cn/blog_migrate/ed6911f1de7769ffa2edde842e3df425.png)
4. Python基于表格数据绘制百分比堆积柱状图
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({
'x': ['Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5'],
'y1': [10, 20, 30, 25, 30],
'y2': [20, 25, 30, 15, 20],
'y3': [30, 30, 25, 20, 10]
})
y_percent = df.iloc[:, 1:].div(df.iloc[:, 1:].sum(axis=1), axis=0) * 100
fig, ax = plt.subplots()
ax.bar(df['x'], y_percent.iloc[:, 0], label='Series 1', color='r')
ax.bar(df['x'], y_percent.iloc[:, 1], bottom=y_percent.iloc[:, 0], label='Series 2', color='g')
ax.bar(df['x'], y_percent.iloc[:, 2], bottom=y_percent.iloc[:, :2].sum(axis=1), label='Series 3', color='b')
plt.show()
![](https://i-blog.csdnimg.cn/blog_migrate/fcab9c743c867a143e6c1eb3788b8607.png)