一、导入需要的库
python
# Matplotlib 是 Python 最常用的绘图库,pyplot 提供了类似 MATLAB 的绘图接口
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
二、常用的库函数
-
plt.plot(x轴,y轴):plot()是画折线图的函数。
-
plt.xlabel('日期'):x轴的显示标签。
-
plt.ylabel('气温(度)'):y轴的显示标签。
-
plt.xticks([原数据标签], [替换后的数据标签], rotation=300):用于x轴数据标签的显示,rotation是倾斜度。
-
plt.title('标题名', loc='left'):图上的名字显示,loc代表显示的位置在哪里。
-
plt.grid(which(网格类型)="major", axis(方向)='both', lw(线的宽度)=1):添加网格线。
-
plt.legend([图例名称, ..,]
,
shadow(阴影) = True,fancybox(圆角矩形)=True)
: 显示图例。 -
**
plt.savefig('名字.格式')
:**保存图表为图片 -
**
plt.show()
:**显示图表 -
plt.ylabel('名称'):设置y轴标签文本
三、案例一:一周气温图(基础版)
python
import matplotlib.pyplot as plt
import numpy as np
x = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
# 定义 x 轴数据:包含星期一到星期日的字符串列表
# 用于表示横坐标的日期标签
high = [28, 28, 25, 18, 17, 20, 25]
# 最高气温数据列表(单位假设为摄氏度)
# 按周一到周日顺序排列
low = [22, 21, 18, 12, 14, 16, 19]
# 最低气温数据列表
# 与 high 列表顺序一致
plt.plot(x, high)
# 绘制最高气温折线图
# 第一个参数 x:横坐标数据
# 第二个参数 high:纵坐标数据
# 默认使用第一个颜色(蓝色)和线性连接
plt.plot(x, low)
# 绘制最低气温折线图
# 使用第二个默认颜色(橙色)叠加到同一坐标系
plt.show()
# 显示图形窗口
# 在脚本中必须调用的函数,用于渲染和显示所有已绘制的图形

四、案例二:分店折线图(中等)
准备好excel文件,拿第一分店的数据
python
# 导入matplotlib的pyplot模块,用于绘图
import matplotlib.pyplot as plt
# 导入pandas模块,用于数据处理和分析
import pandas as pd
# 创建图形对象,设置图形参数
plt.figure(num='折线图', figsize=(6, 4), facecolor='w') # num:图形名称, figsize:图形尺寸(宽6英寸,高4英寸), facecolor:画布背景色
# 设置全局字体为黑体(解决中文显示问题)
plt.rcParams['font.sans-serif'] = ['SimHei']
# 使用pandas读取Excel数据文件
df = pd.read_excel('2022年某店铺3个分店销售额.xlsx')
# 提取月份数据作为x轴
x = df['月份']
# 提取第一分店销售额数据作为y轴
y = df['第一分店']
# 设置x轴标签文本
plt.xlabel('月份')
# 设置y轴标签文本
plt.ylabel('销售额(万元)')
# 设置图表标题(指定宋体、字体大小12、黑色)
plt.title('2022年某店铺第一分店销售额', fontsize=12, color='k', fontproperties='SimSun')
# 设置y轴显示范围(最小值20,最大值30)
plt.ylim(20, 30)
# 添加水平参考线(显示全年平均值,使用虚线样式)
plt.axhline(y=sum(y)/12, linestyle=':')
# 启用网格线显示
plt.grid()
# 遍历每个数据点添加数值标签
for a, b in zip(x, y):
# 在对应坐标位置显示数值,保留两位小数,水平居中对齐
plt.text(a, b+0.2, '%.2f' % b, ha='center',va='bottom')
# 绘制折线图(青色虚线,方形标记,线宽2)
plt.plot(x, y, 'c:s', linewidth=2)
# 添加图例(包含平均销售额和分店数据说明,带阴影效果,圆角边框,定位在右下角)
plt.legend(('平均销售额','第一分店'), shadow=True, fancybox=True, loc=4)
# 再次绘制折线图(使用默认参数,可能覆盖前次样式)
plt.plot(x, y)
# 保存生成的图表为PNG图片文件
plt.savefig('2022年某店铺第一分店销售额.png')
# 在窗口中显示图表
plt.show()

五、案例三:正弦余弦图(中等)
python
# 导入必要的库
import numpy as np
import matplotlib.pyplot as plt
# 设置中文字体(适用于Windows)
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号显示问题
plt.rcParams['axes.unicode_minus'] = False
# 创建一个名为'正'的新图形窗口
plt.figure(num='正')
# 生成x轴数据:在-π到π之间生成256个等间距点(包含终点)
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
# 计算正弦和余弦函数值
y1 = np.sin(x)
y2 = np.cos(x)
# 设置坐标轴标签
plt.xlabel('x轴') # X轴标签
plt.ylabel('y轴') # Y轴标签
# 设置x轴显示范围(扩展为原范围的1.5倍)
plt.xlim(x.min() * 1.5, x.max() * 1.5)
# 自定义x轴刻度标签(使用LaTeX符号表示π)
plt.xticks(
[-4, -2, 0, 2, 4], # 刻度位置(实际数值)
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$\pi/2$', r'$\pi$'] # 显示文本
)
# 添加标题(居中显示)
plt.title('正弦余弦图', loc='center')
# 绘制正弦曲线(红色虚线,线宽2)
plt.plot(x, y1, color='r', linestyle='--', linewidth=2)
# 绘制余弦曲线(黑色实线,线宽2)
plt.plot(x, y2, color='k', linestyle='-', linewidth=2)
# 添加带箭头的注释(xy指向点坐标,xytext文本位置)
plt.annotate(
'最小值',
xy=(-np.pi/2, -1.0), # 箭头指向位置
xytext=(-(np.pi/2), -0.5), # 文本起始位置
arrowprops=dict(arrowstyle='->') # 箭头样式
)
# 添加网格线(主网格,双向,线宽1)
plt.grid(
which="major", # 显示主网格
axis='both', # 同时显示x/y轴网格
lw=1 # 网格线宽
)
# 添加水平参考线(在y=0处,从xmin=0到xmax=0.5)
plt.axhline(
y=0,
xmin=0,
xmax=0.5,
linestyle='-',
color='r'
)
# 添加垂直参考线(在x=0处)
plt.axvline(
x=0,
linestyle='-',
color='r'
)
# 添加垂直参考区域(x在0.5到2.0之间,透明度0.9)
plt.axvspan(
xmin=0.5,
xmax=2.0,
alpha=0.9
)
# 添加水平参考区域(y在0.5到1.0之间,透明度0.3)
plt.axhspan(
ymin=0.5,
ymax=1.0,
alpha=0.3
)
# 添加图例(元组指定条目,loc=1为右上角,带阴影和圆角边框)
plt.legend(
('正弦函数', '余弦函数'),
loc=1,
shadow=True,
fancybox=True
)
# 显示图形
plt.show()

六、案例四:销售额折线图(进阶版)
python
# 导入 matplotlib 库的 pyplot 模块,用于绘图
import matplotlib.pyplot as plt
# 导入 pandas 库,用于数据处理和读取 Excel 文件
import pandas as pd
# 创建一个新的图形窗口,设置窗口标题为 '多柱形图',图形大小为 9x6 英寸,背景颜色为白色
plt.figure(num='折线图', figsize=(9, 6), facecolor='w')
# 设置 matplotlib 使用的字体为楷体,以正确显示中文
plt.rcParams['font.sans-serif'] = 'KaiTi'
# 解决负号显示为方块的问题,使负号能正常显示
plt.rcParams['axes.unicode_minus'] = False
# 使用 pandas 的 read_excel 函数读取 Excel 文件 '不同产品各季度的销售额.xlsx',并将数据存储在 DataFrame 对象 df 中
df = pd.read_excel('不同产品各季度的销售额.xlsx')
# 从 DataFrame 中提取 '季度' 列的数据,作为 x 轴的数据
x = df['季度']
# 从 DataFrame 中提取 '产品A' 列的数据,作为产品 A 的销售额数据
y1 = df['产品A']
# 从 DataFrame 中提取 '产品B' 列的数据,作为产品 B 的销售额数据
y2 = df['产品B']
# 从 DataFrame 中提取 '产品C' 列的数据,作为产品 C 的销售额数据
y3 = df['产品C']
# 设置图表的标题为 '不同产品各季度的销售额',字体大小为 20
plt.title('不同产品各季度的销售额', fontsize=20)
# 设置 y 轴的标签为 '销售额(元)'
plt.ylabel('销售额(元)', fontsize=16)
# 设置 y 轴的取值范围为 0 到 10000
plt.ylim(0, 10000)
# 在图表中添加网格线,方便观察数据
plt.grid()
# 遍历产品 A 的每个数据点,在数据点上方 500 个单位处添加销售额的文本标签
for a, b in zip(x, y1):
# 在坐标 (a, b+500) 处添加文本,文本内容为 b 的整数值,水平居中对齐
plt.text(a, b + 500, '%d' % b, ha='center')
# 绘制产品 A 的折线图,x 轴为季度数据,y 轴为产品 A 的销售额数据,线条颜色为红色,样式为虚线,数据点用圆形标记
plt.plot(x, y1, 'r:o')
# 遍历产品 B 的每个数据点,在数据点上方 500 个单位处添加销售额的文本标签
for a, b in zip(x, y2):
# 在坐标 (a, b+500) 处添加文本,文本内容为 b 的整数值,水平居中对齐
plt.text(a, b + 500, '%d' % b, ha='center')
# 绘制产品 B 的折线图,x 轴为季度数据,y 轴为产品 B 的销售额数据,线条颜色为黄色,样式为点划线,数据点用菱形标记
plt.plot(x, y2, 'y-.D')
# 遍历产品 C 的每个数据点,在数据点上方 200 个单位处添加销售额的文本标签
for a, b in zip(x, y3):
# 在坐标 (a, b+200) 处添加文本,文本内容为 b 的整数值,水平居中对齐
plt.text(a, b + 200, '%d' % b, ha='center')
# 绘制产品 C 的折线图,x 轴为季度数据,y 轴为产品 C 的销售额数据,线条颜色为蓝色,样式为双虚线,数据点用特定样式标记
plt.plot(x, y3, 'b--4')
# 添加图例,图例标签分别为 '产品A'、'产品B'、'产品C',添加阴影效果和圆角边框
plt.legend(['产品A', '产品B', '产品C'], shadow=True, fancybox=True)
# 显示绘制好的图表
plt.show()

七、案例五:不同行业的平均工资(进阶版)
python
# 导入 matplotlib 库中的 pyplot 模块,该模块提供了类似于 MATLAB 的绘图接口,用于创建各种图表
import matplotlib.pyplot as plt
# 导入 pandas 库,它是一个强大的数据处理和分析工具,常用于读取和处理结构化数据
import pandas as pd
# 创建一个新的图形窗口,设置窗口标题为 '2021年各行业城镇单位就业人员年平均工资'
# 图形的大小为 12 英寸宽,9 英寸高,背景颜色设置为白色
plt.figure(num='2021年各行业城镇单位就业人员年平均工资', figsize=(12, 9), facecolor='w')
# 设置 matplotlib 的字体为黑体,这样可以正确显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 使用 pandas 的 read_excel 函数读取 Excel 文件 '不同行业城镇单位就业人员年平均工资.xlsx'
# 并将文件中的数据存储在 DataFrame 对象 df 中
df = pd.read_excel('不同行业城镇单位就业人员年平均工资.xlsx')
# 从 DataFrame 对象 df 中提取 '行业' 列的数据,存储在变量 hy 中
hy = df['行业']
# 从 DataFrame 对象 df 中提取 '2021年' 列的数据,存储在变量 yuan 中
yuan = df['2021年']
# 为图表设置标题,标题内容为 '2021年各行业城镇单位就业人员年平均工资'
# loc='center' 表示标题居中显示
plt.title('2021年各行业城镇单位就业人员年平均工资', loc='center')
# 取消 x 轴标签的设置,注释掉的代码原本是打算设置 x 轴标签为 "行业"
# plt.xlabel("行业")
# 设置 y 轴的标签为 "单位(元)"
plt.ylabel("单位(元)")
# 在图表中添加网格线,方便查看数据点的位置和数值
plt.grid()
# 绘制一条水平参考线,y 的位置为所有行业 2021 年平均工资的平均值
# 这里假设数据有 19 个行业,linestyle=':' 表示参考线的样式为虚线
plt.axhline(y=sum(yuan)/19, linestyle=':')
# 设置 x 轴刻度标签的属性
# rotation=290 表示将刻度标签逆时针旋转 290 度,近似垂直显示
# fontsize=10 表示将刻度标签的字体大小设置为 10
# 注释掉的 va='center' 原本是想让标签垂直居中
plt.xticks(
rotation=290,
fontsize=10,
# va='center'
)
# 调整子图的布局,增加底部的边距为 0.25,防止 x 轴标签与图表底部重叠
plt.subplots_adjust(bottom=0.25)
# 使用 zip 函数将行业名称和对应的 2021 年平均工资组合成元组
# 遍历这些元组,在每个数据点的位置添加文本标签
for a, b in zip(hy, yuan):
# 在坐标 (a, b) 处添加文本标签,标签内容为该行业 2021 年平均工资,格式为 'X 元'
# ha='right' 表示文本水平右对齐,va='bottom' 表示文本垂直底部对齐
plt.text(a, b, '%d元' % b, ha='right', va='bottom')
# 绘制折线图,x 轴为行业名称,y 轴为 2021 年各行业平均工资
# 'r-D' 表示线条颜色为红色,样式为虚线,数据点用菱形标记
plt.plot(hy, yuan, 'r-D')
# 为图表添加图例,图例中显示 '平均值参考线' 和 '各行业的评价工资'(这里可能存在拼写错误,应为 '各行业的平均工资')
# loc=1 表示图例显示在右上角,shadow=True 为图例添加阴影效果,fancybox=True 为图例添加圆角边框
plt.legend(('平均值参考线', '各行业的评价工资'), loc=1, shadow=True, fancybox=True)
# 将绘制好的图表保存为名为 '2021年各行业城镇单位就业人员年平均工资.png' 的图片文件
plt.savefig('2021年各行业城镇单位就业人员年平均工资.png')
# 显示绘制好的图表
plt.show()
