一、什么是网格线?
我们可以使用 pyplot 中的grid()方法来设置图表中的网格线。
网格线的作用:
| 作用 | 说明 |
|---|---|
| 辅助读数 | 帮助读者估算数据点的值 |
| 对齐参考 | 方便比较不同曲线的位置 |
| 视觉分区 | 让图表结构更清晰 |
基本语法:
python
matplotlib.pyplot.grid(b=None, which='major', axis='both', **kwargs)
二、grid() 参数详解
1. 参数说明
| 参数 | 可选值 | 默认值 | 说明 |
|---|---|---|---|
b | True/False/None | None | 是否显示网格线 |
which | 'major'/'minor'/'both' | 'major' | 应用更改的网格线类型 |
axis | 'both'/'x'/'y' | 'both' | 显示哪个方向的网格线 |
**kwargs | 样式参数 | — | 颜色、线型、宽度等 |
关于 b 参数:
b=None:切换网格线状态(当前开则关,当前关则开)。b=True:显示网格线。b=False:不显示网格线。如果设置了
**kwargs参数,则b默认为True。
关于 which 参数:
| 值 | 说明 |
|---|---|
'major' | 主刻度网格线(默认) |
'minor' | 次刻度网格线 |
'both' | 主次刻度都显示 |
2. 最简单的网格线
参数使用默认值:
python
import numpy as np import matplotlib.pyplot as plt x = np.array([1, 2, 3, 4]) y = np.array([1, 4, 9, 16]) plt.title("RUNOOB grid() Test") plt.xlabel("x - label") plt.ylabel("y - label") plt.plot(x, y) plt.grid() plt.show()
效果:在 x 轴和 y 轴方向都显示默认样式的网格线。
三、控制网格线方向(axis 参数)
axis参数用于设置显示哪个方向的网格线。
| 值 | 效果 |
|---|---|
'both'(默认) | x 轴和 y 轴方向都显示 |
'x' | 只显示 x 轴方向的网格线(竖线) |
'y' | 只显示 y 轴方向的网格线(横线) |
只显示 x 轴方向的网格线
python
import numpy as np import matplotlib.pyplot as plt x = np.array([1, 2, 3, 4]) y = np.array([1, 4, 9, 16]) plt.title("RUNOOB grid() Test") plt.xlabel("x - label") plt.ylabel("y - label") plt.plot(x, y) plt.grid(axis='x') # 只在 x 轴方向显示网格线 plt.show()
效果:只显示垂直于 x 轴的竖线。
提示:
axis='x'显示的是垂直于 x 轴的线(即竖线),axis='y'显示的是垂直于 y 轴的线(即横线)。这个方向容易混淆,记忆方法是"axis 指定的是刻度所在的轴"。
四、定制网格线样式
网格线的样式通过**kwargs参数设置,格式如下:
python
grid(color='color', linestyle='linestyle', linewidth=number)
1. 颜色(color)
| 颜色标记 | 描述 |
|---|---|
'b' | 蓝色 |
'm' | 洋红色 |
'g' | 绿色 |
'y' | 黄色 |
'r' | 红色 |
'k' | 黑色 |
'w' | 白色 |
'c' | 青绿色 |
'#008000' | RGB 颜色字符串 |
2. 线型(linestyle)
| 线型标记 | 描述 |
|---|---|
'-' | 实线 |
'--' | 破折线 |
'-.' | 点划线 |
':' | 虚线 |
3. 宽度(linewidth)
设置线的宽度,可以设置一个数字。
4. 样式定制实例
python
import numpy as np import matplotlib.pyplot as plt x = np.array([1, 2, 3, 4]) y = np.array([1, 4, 9, 16]) plt.title("RUNOOB grid() Test") plt.xlabel("x - label") plt.ylabel("y - label") plt.plot(x, y) plt.grid(color='r', linestyle='--', linewidth=0.5) plt.show()
效果:红色破折线网格,线宽 0.5。
五、常用样式组合速查
| 需求 | 写法 |
|---|---|
| 默认网格 | plt.grid() |
| 只显示竖线 | plt.grid(axis='x') |
| 只显示横线 | plt.grid(axis='y') |
| 红色虚线网格 | plt.grid(color='r', linestyle='--') |
| 灰色细线网格 | plt.grid(color='gray', linestyle=':', linewidth=0.5) |
| 黑色实线网格 | plt.grid(color='k', linestyle='-', linewidth=1) |
| 半透明网格 | plt.grid(alpha=0.3) |
| 关闭网格 | plt.grid(False) |
推荐:网格线宜淡不宜浓,
alpha=0.3配合灰色是常见搭配,既起辅助作用又不喧宾夺主。
六、完整示例:规范的中文图表
python
import numpy as np import matplotlib.pyplot as plt # 中文配置 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 数据 x = np.linspace(0, 10, 100) y = np.sin(x) # 绘图 plt.plot(x, y, 'b-', lw=2, label='sin(x)') # 标题与标签 plt.title("正弦函数图像", fontsize=16) plt.xlabel("x 轴(弧度)", fontsize=12) plt.ylabel("y 轴", fontsize=12) # 网格线:灰色虚线,半透明 plt.grid(color='gray', linestyle='--', linewidth=0.5, alpha=0.5) # 图例 plt.legend() plt.show()效果:网格线辅助读数,但不干扰主体曲线,整体专业清爽。
七、网格线配置流程图
八、常见问题排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 网格线不显示 | 未调用grid()或被后续设置覆盖 | 确认调用了plt.grid() |
| 网格线太浓 | 未设置透明度或颜色过深 | 设置alpha=0.3或浅色 |
axis方向搞反 | 对轴的方向理解有误 | 记住 axis 指定刻度所在轴 |
| 网格线遮挡数据 | 绘制顺序问题 | 网格线通常在数据之下,检查 zorder |
| 次刻度网格不显示 | which参数未设置 | 使用which='both' |
| 样式参数无效 | 参数名拼写错误 | 检查linestyle、linewidth拼写 |
九、小结
本篇你掌握了 Matplotlib 网格线的完整用法:
grid() 方法:
b、which、axis三大参数控制显示。方向控制:
axis='x'显示竖线,axis='y'显示横线,'both'双方向。样式定制:
color颜色、linestyle线型、linewidth宽度。实用技巧:网格线宜淡不宜浓,
alpha控制透明度。
网格线是提升图表可读性的细节之一。下一篇我们将学习Matplotlib 散点图,用点来展示数据之间的关系。