Matplotlib 可视化大师系列(一):plt.plot() - 绘制折线图的利刃
目录
- Matplotlib 可视化大师系列博客总览
- Matplotlib 可视化大师系列(一):plt.plot() - 绘制折线图的利刃
- 一、 plt.plot() 是什么?
- 二、 函数原型与核心参数
- 核心参数详解
- 三、 从入门到精通:代码示例
- 示例 1:最基础的折线图
- 示例 2:使用格式化字符串快速绘图
- 示例 3:使用关键字参数进行精细控制(推荐)
- 四、 最佳实践与常见陷阱
- 五、 总结
系统地学习 Matplotlib 的各种绘图方式是从数据可视化新手到专家的必经之路。
下面我们将从最简单的
plt.plot()
开始,逐一深入讲解 Matplotlib 的核心绘图函数。每篇博客都将遵循类似的详细结构:原理、参数详解、代码示例、最佳实践和常见陷阱。
Matplotlib 可视化大师系列博客总览
本系列旨在提供一份系统、全面、深入的 Matplotlib 学习指南。以下是博客列表:
- 基础篇:
plt.plot()
- 绘制折线图的利刃 - 分布篇:
plt.scatter()
- 探索变量关系的散点图 - 比较篇:
plt.bar()
与plt.barh()
- 清晰对比的柱状图 - 统计篇:
plt.hist()
与plt.boxplot()
- 洞察数据分布 - 占比篇:
plt.pie()
- 展示组成部分的饼图 - 高级篇:
plt.imshow()
- 绘制矩阵与图像的强大工具 - 专属篇: 绘制误差线 (
plt.errorbar()
)、等高线 (plt.contour()
) 等特殊图表 - 综合篇: 在一张图中组合多种图表类型
Matplotlib 可视化大师系列(一):plt.plot() - 绘制折线图的利刃
折线图是数据可视化中最基本、最常用的图表类型之一。它擅长展示数据随时间或有序类别变化的趋势。在 Matplotlib 中,绘制折线图的核心函数就是 plt.plot()
。这篇文章将带你从零开始,全面掌握这把利刃。
一、 plt.plot() 是什么?
plt.plot()
是 Matplotlib 的 Pyplot 接口中最核心的函数之一。它的主要功能是在坐标轴上绘制点,并将这些点按顺序连接成线,从而形成折线图。虽然它最常被用于折线图,但通过调整参数,它也能用于绘制散点图、阶梯图等变体。
它的工作原理非常简单:你提供一组 X 坐标和一组 Y 坐标,它负责描点和连线。
二、 函数原型与核心参数
让我们先拆解一下这个函数:
plt.plot(*args, scalex=True, scaley=True, data=None, **kwargs)
看起来有点复杂?别怕,我们把它简化成最常用的形式:
plt.plot(x, y, format_string, **kwargs)
x
,y
(数组或列表): 分别是数据点的横坐标和纵坐标值。如果只提供了y
,则x
会默认为range(len(y))
。format_string
(字符串,可选): 这是一个非常简洁强大的参数,用于快速设置线条的颜色、标记和线型。格式为'[color][marker][line]'
。**kwargs
(关键字参数): 用于进行更精细、更详细的样式控制,覆盖format_string
的设置或设置更多属性。
核心参数详解
1. 格式化字符串 (format_string
) - 快速样式设置
这是一个“快捷键”,让你用很短的代码定义样式。
-
颜色 (Color):
字符 颜色 全称 'b'
蓝色 blue 'g'
绿色 green 'r'
红色 red 'c'
青色 cyan 'm'
品红 magenta 'y'
黄色 yellow 'k'
黑色 black 'w'
白色 white -
标记 (Marker) - 数据点的形状:
字符 描述 字符 描述 '.'
点 '*'
星号 ','
像素点 's'
正方形 'o'
圆圈 'D'
菱形 'v'
下三角 '^'
上三角 '<'
左三角 '>'
右三角 'x'
X形 '+'
加号 -
线型 (Line Style):
字符 描述 '-'
实线 (默认) '--'
虚线 '-.'
点划线 ':'
点线 'None
’ 或' '
不画线
组合示例:
'ro-'
: 红色圆圈标记的实线。'g--'
: 绿色虚线,无标记。'b*:'
: 蓝色星号标记的点线。
2. 关键字参数 (**kwargs
) - 精细控制
当快捷键无法满足你时,就用关键字参数。这是更推荐的方式,因为它代码可读性更高。
- 颜色:
color='red'
(支持颜色英文名、十六进制码如'#FF5733'
、RGB元组如(0.2, 0.5, 0.8)
) - 标记:
marker='o'
markersize=10
或ms=10
markerfacecolor='red'
或mfc='red'
(标记填充色)markeredgecolor='blue'
或mec='blue'
(标记边缘色)markeredgewidth=2
或mew=2
(标记边缘宽度)
- 线型:
linestyle='--'
或ls='--'
linewidth=2.5
或lw=2.5
- 透明度:
alpha=0.5
(0为完全透明,1为完全不透明) - 标签:
label='Sales Trend'
(用于后续生成图例)
三、 从入门到精通:代码示例
示例 1:最基础的折线图
import matplotlib.pyplot as plt
import numpy as np# 生成一些数据
x = np.linspace(0, 2*np.pi, 50) # 0到2π之间生成50个点
y = np.sin(x)# 最简单的调用:只提供y值,x自动生成
plt.plot(y)
plt.title('A Simple Sine Wave (only y)')
plt.show()# 提供x和y
plt.plot(x, y)
plt.title('A Simple Sine Wave')
plt.xlabel('X-axis (Radians)')
plt.ylabel('Y-axis (sin(X))')
plt.grid(True) # 添加网格
plt.show()
示例 2:使用格式化字符串快速绘图
# 在同一张图上绘制正弦和余弦曲线,使用format_string
y_cos = np.cos(x)plt.plot(x, y, 'ro-', label='sin(x)') # 红色圆点实线
plt.plot(x, y_cos, 'g^:', label='cos(x)') # 绿色上三角点线plt.title('Sine and Cosine Waves')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend() # 显示图例
plt.grid(True, linestyle='--', alpha=0.7)
plt.show()
示例 3:使用关键字参数进行精细控制(推荐)
plt.figure(figsize=(10, 5)) # 设置画布大小# 绘制第一条线,使用关键字参数精细控制
plt.plot(x, y,color='blue',linestyle='-',linewidth=2,marker='o',markersize=4,markerfacecolor='red',markeredgecolor='black',alpha=0.8,label='Sin(x)')# 绘制第二条线
plt.plot(x, y_cos,color='green',linestyle='--',linewidth=1.5,marker='s',markersize=3,alpha=0.6,label='Cos(x)')plt.title('Beautiful Sine and Cosine Waves', fontsize=14)
plt.xlabel('X-axis (Radians)', fontsize=12)
plt.ylabel('Y-axis', fontsize=12)
plt.legend(loc='upper right') # 精确控制图例位置
plt.grid(True)
plt.tight_layout() # 自动调整布局
plt.show()
四、 最佳实践与常见陷阱
-
最佳实践:
- 优先使用关键字参数:
color='red'
比'r'
更清晰易懂,尤其是在团队合作或代码复查时。 - 设置图形大小: 在绘图前使用
plt.figure(figsize=(width, height))
,避免默认图片尺寸不合适。 - 添加完整标签: 永远记得给图表 (
plt.title()
)、X轴 (plt.xlabel()
)、Y轴 (plt.ylabel()
) 添加清晰的标签。 - 使用图例: 当有多条线时,务必使用
label
参数和plt.legend()
。 - 善用网格:
plt.grid(True)
可以让读者更准确地读取数据值。
- 优先使用关键字参数:
-
常见陷阱:
- 混淆面向对象接口和 Pyplot 接口: 如果你已经使用了
fig, ax = plt.subplots()
,那么后续的绘图命令应该是ax.plot(...)
,ax.set_title(...)
,而不是plt.plot(...)
,plt.title(...)
。保持上下文一致! - 忘记
plt.show()
: 在脚本环境中,必须调用plt.show()
才能显示图形。在 Jupyter Notebook 中,通常使用%matplotlib inline
魔法命令,可以自动显示。 - 数据点顺序混乱: 折线图会将点按X坐标顺序连接。如果你的X数据是乱序的,画出来的线会是杂乱无章的。绘图前先对数据排序:
x, y = zip(*sorted(zip(x, y)))
。
- 混淆面向对象接口和 Pyplot 接口: 如果你已经使用了
五、 总结
plt.plot()
是 Matplotlib 绘图的基石。它看似简单,却蕴含着巨大的灵活性。
- 核心功能: 给定 (x, y) 坐标,描点连线。
- 两种样式控制:
format_string
(快捷)和**kwargs
(精细、推荐)。 - 关键步骤: 提供数据、设置样式、添加标签标题图例、显示图形。
掌握了 plt.plot()
,你就已经打开了 Matplotlib 可视化世界的大门。在下一篇文章中,我们将探索另一个强大的工具——plt.scatter()
,看看如何用它来揭示变量之间的深层关系。