matplotlib基本绘图
简介
Matplotlib 是 Python 中一个流行的绘图库,用于创建各种静态、动态和交互式的图表。
本文将通过一系列完整的案例来教授如何使用 Matplotlib 进行数据可视化。
环境准备
-
安装 matplotlib,在 Python 环境中安装 matplotlib:
pip install numpy matplotlib seaborn -
安装完成后,可以验证是否安装成功:
import matplotlib print(matplotlib.__version__) # 输出版本号,例如:3.10.1 -
解决中文不能正常显示
import matplotlib.pyplot as plt # 解决中文无法正常显示问题 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 配置matplotlib支持中文字体和LaTeX数学符号 plt.rcParams.update({ # 设置字体优先使用中文字体(SimHei黑体),同时保留serif字体用于LaTeX数学符号 "font.family": ["SimHei", "serif"], # 使用Computer Modern字体渲染数学符号 "mathtext.fontset": "cm", # 解决坐标轴中负号显示问题,确保负号正确显示 "axes.unicode_minus": False, # 不强制使用外部LaTeX,依赖matplotlib内置的数学表达式渲染 "text.usetex": False, })
import matplotlib.pyplot as plt
import numpy as np
# ---------------------------
# 第一部分:全局配置
# ---------------------------
# 设置中文显示(解决中文乱码问题)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体为黑体
plt.rcParams['axes.unicode_minus'] = False # 解决符号显示问题
# 配置matplotlib支持中文字体和LaTeX数学符号
plt.rcParams.update({
# 设置字体优先使用中文字体(SimHei黑体),同时保留serif字体用于LaTeX数学符号
"font.family": ["SimHei", "serif"],
# 使用Computer Modern字体渲染数学符号
"mathtext.fontset": "cm",
# 解决坐标轴中负号显示问题,确保负号正确显示
"axes.unicode_minus": False,
# 不强制使用外部LaTeX,依赖matplotlib内置的数学表达式渲染
"text.usetex": False,
})
1:简单折线图绘制
描述:
使用 matplotlib 创建一个简单的折线图,展示函数 y = x² 的曲线。要求设置标题、坐标轴标签、网格线,并为折线添加数据标记。
步骤:
- 导入必要的库。
- 准备数据。
- 使用
plt.plot()方法绘制图表。 - 添加标题和标签。
- 显示图表。
代码示例:
import matplotlib.pyplot as plt
import numpy as np
# 配置matplotlib支持中文字体和LaTeX数学符号
plt.rcParams.update({
# 设置字体优先使用中文字体(SimHei黑体),同时保留serif字体用于LaTeX数学符号
"font.family": ["SimHei", "serif"],
# 使用Computer Modern字体渲染数学符号
"mathtext.fontset": "cm",
# 解决坐标轴中负号显示问题,确保负号正确显示
"axes.unicode_minus": False,
# 不强制使用外部LaTeX,依赖matplotlib内置的数学表达式渲染
"text.usetex": False,
})
# 生成数据
x = np.arange(1, 11) # x轴数据:1到10的整数
y = x ** 2 # y轴数据:x的平方
# 创建图形和坐标轴
# 使用matplotlib的figure函数创建一个图形窗口,设置窗口的大小为宽12英寸、高6英寸
plt.figure(figsize=(12,6))
# 绘制折线图,添加标记和样式
# 调用plt.plot函数绘制折线图,以x为x轴数据,y为y轴数据,设置折线的颜色为蓝色(color='blue'),线型为实线(linestyle='-'),并为每个数据点添加圆圈标记(marker='o')
plt.plot(x, y, marker='o', linestyle='-', color='blue', label=r'$y = x^2$')
# plt.plot(x, y, marker='o', linestyle='-', color='blue', label='y = x²') # 直接写²
# 添加标题和标签
# 设置图表的标题
plt.title('平方函数折线图', fontsize=15)
# 设置x轴的标签为'x 轴'
plt.xlabel('X值', fontsize=12)
# 设置y轴的标签为'y 轴'
plt.ylabel('Y值 (X²)', fontsize=12)
# 添加网格和图例
# 显示网格线,设置网格线的线型为虚线(linestyle='--'),透明度为0.7(alpha=0.7)
plt.grid(True, linestyle='--', alpha=0.7)
plt.legend() # 显示图例
# 显示图形
plt.tight_layout() # 自动调整布局
plt.show()

2:多线图对比分析
描述:
创建一个双 Y 轴图表,同时展示正弦函数 sin(x) 和余弦函数 cos(x) 的曲线。要求使用不同颜色区分两条线,并为每个 Y 轴添加对应的标签。
import matplotlib.pyplot as plt # 导入matplotlib的pyplot模块用于绘制图形
import numpy as np # 导入numpy库用于数值计算
# 配置matplotlib支持中文字体和LaTeX数学符号
plt.rcParams.update({
# 设置字体优先使用中文字体(SimHei黑体),同时保留serif字体用于LaTeX数学符号
"font.family": ["SimHei", "serif"],
# 使用Computer Modern字体渲染数学符号
"mathtext.fontset": "cm",
# 解决坐标轴中负号显示问题,确保负号正确显示
"axes.unicode_minus": False,
# 不强制使用外部LaTeX,依赖matplotlib内置的数学表达式渲染
"text.usetex": False,
})
# 生成数据
x = np.linspace(0, 10, 100) # 生成0到10之间的100个等间距点
y1 = np.sin(x) # 计算x的正弦值
y2 = np.cos(x) # 计算x的余弦值
# 创建图形和双Y坐标轴
fig, ax1 = plt.subplots(figsize=(10, 6)) # 创建图形和主坐标轴,设置图形大小为10x6英寸
# 绘制正弦曲线(左Y轴)
color = 'tab:red' # 设置正弦曲线颜色为红色
ax1.set_xlabel('X值', fontsize=12) # 设置X轴标签
ax1.set_ylabel('正弦值', color=color, fontsize=12) # 设置左Y轴标签,颜色为红色
ax1.plot(x, y1, color=color, linewidth=2, label='正弦') # 绘制正弦曲线,线宽为2
ax1.tick_params(axis='y', labelcolor=color) # 设置左Y轴刻度颜色为红色
# 创建第二个Y轴(共享X轴)
ax2 = ax1.twinx() # 创建第二个Y轴,与ax1共享X轴
# 绘制余弦曲线(右Y轴)
color = 'tab:blue' # 设置余弦曲线颜色为蓝色
ax2.set_ylabel('余弦值', color=color, fontsize=12) # 设置右Y轴标签,颜色为蓝色
ax2.plot(x, y2, color=color, linewidth=2, label='余弦') # 绘制余弦曲线,线宽为2
ax2.tick_params(axis='y', labelcolor=color)

最低0.47元/天 解锁文章
658

被折叠的 条评论
为什么被折叠?



