目录:
Matplotlib 由 John Hunter 于 2003 年创建,遵循 PSF/BSD 开源协议,提供了类似 MATLAB 的绘图接口,能够生成出版级质量的静态、动态及交互式图表,支持多种硬拷贝格式输出。
Matplotlib绘图遵循一个清晰的流程:创建画布 → 创建/选定子图 → 绘制图形 → 添加装饰元素 → 显示或保存。
安装模块:
$ pip3 install matplotlib
折线图用于展示数据的连续变化趋势。
plt.plot() 是绘制折线图的核心函数,可通过 color、linestyle、linewidth、marker 等参数自定义线条样式。
图例可通过在 plot() 中设置 label 参数,再调用 plt.legend() 显示。
import matplotlib.pyplot as plt
# 生成数据
x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [x ** 2 for x in x]
# 绘制折线图
plt.plot(x, y, color='blue', linewidth=2.5, linestyle='-', label='y = x^2')
# 添加装饰
plt.title('Square Curve') # 标题
plt.xlabel('x-axis') # X 轴标签
plt.ylabel('y-axis') # Y 轴标签
plt.grid(True) # 显示网格线
plt.legend() # 显示图例
# 显示图形
plt.show()
柱状图用于比较不同类别的数据值。
import matplotlib.pyplot as plt
# 生成数据
categories = ['A', 'B', 'C', 'D']
values = [5, 7, 3, 8]
# 绘制柱状图
plt.bar(categories, values, color='skyblue')
# 添加装饰
plt.title('Simple Bar Chart')
plt.xlabel('Categories')
plt.ylabel('Values')
# 显示图形
plt.show()
饼图用于显示各部分占整体的比例。
import matplotlib.pyplot as plt
# 生成数据
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
# 绘制饼图
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
# 添加装饰
plt.title('Pie Chart')
plt.axis('equal') # 确保饼图是圆形
# 显示图形
plt.show()
散点图用于展示两个变量之间的关系或分布。
plt.scatter() 函数功能强大,可以通过颜色(c)和大小(s)映射第三个甚至第四个变量,丰富信息维度。
import matplotlib.pyplot as plt
import random
# 生成随机数据
n = 1024
X = [random.random() for _ in range(n)]
Y = [random.random() for _ in range(n)]
# 绘制散点图
plt.scatter(X, Y, s=75, c=X, alpha=0.5) # s: 点大小, c: 颜色序列, alpha: 透明度
# 添加装饰
plt.title('Scatter Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
# 显示图形
plt.show()
import matplotlib.pyplot as plt
import numpy as np
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 8)) # 2 行 2 列,共 4 个子图
x = np.linspace(0, 2*np.pi, 100)
axes[0, 0].plot(x, np.sin(x))
axes[0, 0].set_title('Sin(x)')
axes[0, 1].plot(x, np.cos(x), 'r--')
axes[0, 1].set_title('Cos(x)')
axes[1, 0].scatter(x, np.tan(x))
axes[1, 0].set_title('Tan(x) Scatter')
axes[1, 1].hist(np.sin(x), bins=20)
axes[1, 1].set_title('Sin(x) Distribution')
plt.tight_layout() # 自动调整子图间距
plt.show()
使用 plt.savefig() 可以将图形保存为 PNG、PDF、SVG 等多种格式。
import matplotlib.pyplot as plt
# 生成数据
categories = ['A', 'B', 'C', 'D']
values = [5, 7, 3, 8]
# 绘制柱状图
plt.bar(categories, values, color='skyblue')
# 添加装饰
plt.title('Simple Bar Chart')
plt.xlabel('Categories')
plt.ylabel('Values')
# 保存图片
plt.savefig('test.png', dpi=300, bbox_inches='tight')
matplotlib 默认使用英文字体,中文字体需要额外设置。
import matplotlib.pyplot as plt
# 设置字体,可以尝试列表中的多个,系统会按顺序查找第一个可用的
plt.rcParams['font.sans-serif'] = ['Heiti TC', 'Hiragino Sans GB', 'PingFang SC', 'Arial Unicode MS']
# 必须设置此项以正常显示负号(-)
plt.rcParams['axes.unicode_minus'] = False
# 示例绘图
plt.plot([1, 2, 3], [4, 5, 6])
plt.title('中文标题示例')
plt.xlabel('X轴标签')
plt.ylabel('Y轴标签')
plt.show()
↶ 返回首页 ↶