1. Matplotlib绘制柱形图/柱状图/条形图
- 柱状图是一种用矩形柱来表示数据分类的图表,柱状图可以垂直绘制,也可以水平绘制,它的高度与其表示的数据成正比关系
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif'] = "SimHei"
plt.rcParams["axes.unicode_minus"] = False
%config Inlinebackend.figure_format = "svg"
2. 简单柱状图
x = ["语文","数学","英语","Python","化学"]
y = [20,10,40,60,10]
plt.figure(figsize=(5, 3))
plt.bar(x, y)
<BarContainer object of 5 artists>
3. Pandas获取Excel数据
df = pd.read_excel("05_bar.xlsx", sheet_name="bar1")
df
| 年份 | 销售额 |
---|
0 | 2014 | 1962035 |
---|
1 | 2015 | 2838693 |
---|
2 | 2016 | 2317447 |
---|
3 | 2017 | 2335002 |
---|
4 | 2018 | 2438570 |
---|
5 | 2019 | 1675591 |
---|
6 | 2020 | 3568120 |
---|
x, y = df["年份"], df["销售额"]
plt.figure(figsize=(5, 3))
plt.title("年度销售额")
plt.xlabel("年份")
plt.ylabel("销售额")
plt.bar(x, y, width=0.8)
for a, b in zip(x, y):
plt.text(x=a, y=b, s="{:.1f}万".format(b/10000), ha="center", fontsize=9)
4. 一次绘制多个柱形图
df2 = pd.read_excel("05_bar.xlsx", sheet_name="bar2")
df2
| 年份 | 北区 | 中区 | 南区 |
---|
0 | 2014 | 634704 | 534917 | 792414 |
---|
1 | 2015 | 1218844 | 746554 | 873295 |
---|
2 | 2016 | 1013322 | 904058 | 400067 |
---|
3 | 2017 | 1068521 | 12269 | 1254212 |
---|
4 | 2018 | 419352 | 526985 | 1492233 |
---|
5 | 2019 | 1190076 | 117510 | 368005 |
---|
6 | 2020 | 695421 | 1433961 | 1438738 |
---|
x, y1, y2, y3 = df2["年份"], df2["北区"], df2["中区"], df2["南区"]
plt.figure(figsize=(5, 3))
plt.title("年销售额")
plt.xlabel("年份")
plt.ylabel("销售额")
w = 0.2
plt.bar(x-w, y1, width=w, label="北区")
plt.bar(x, y2, width=w, label="中区")
plt.bar(x+w, y3, width=w, label="南区")
plt.legend()
<matplotlib.legend.Legend at 0x1771356c610>
plt.figure(figsize=(5, 3))
plt.title("年销售额")
plt.xlabel("年份")
plt.ylabel("销售额")
plt.bar(x, y1, label="北区")
plt.bar(x, y2, label="中区", bottom=y1)
plt.bar(x, y3, label="南区", bottom=y1+y2)
plt.legend()
<matplotlib.legend.Legend at 0x17713808a10>
5. 条形图
plt.barh(x, y1)
<BarContainer object of 7 artists>