当前位置:首页>python>一起学Python第108天:3分钟学会 Matplotlib 网格线

一起学Python第108天:3分钟学会 Matplotlib 网格线

  • 2026-09-18 16:27:31
一起学Python第108天:3分钟学会 Matplotlib 网格线

一、为什么你的图表看起来"很业余"?

先来看两张对比图:

❌ 没有网格线 —— 数据点孤零零地飘在空白画布上,读者很难快速定位数值

✅ 加了网格线 —— 像坐标纸一样,一眼就能读出数据对应的坐标值

网格线(Grid) 就是图表的"隐形标尺",它不改变数据本身,却能让数据可读性提升10倍。

二、核心 API:一个 grid() 搞定一切

matplotlib.pyplot.grid(b=None, which='major', axis='both', **kwargs)

参数速查表

三、从入门到精通:4个实战示例

示例 1:一键开启默认网格(最常用)

import numpy as npimport matplotlib.pyplot as pltx = np.array([1, 2, 3, 4])y = np.array([1, 4, 9, 16])plt.plot(x, y)plt.title("Test")plt.xlabel("X")plt.ylabel("Y")plt.grid()  # 什么都不写,默认开启双向主刻度网格plt.show()
效果:灰色实线网格,横纵双向,主刻度对齐。

示例 2:只显示 X 轴方向网格(聚焦趋势)

plt.plot(x, y)plt.title("Test show X")plt.grid(axis='x')  # 只画垂直线,适合看时间序列趋势plt.show()
适用场景:时间序列数据,垂直网格线帮助对齐时间点,水平线反而干扰视觉。

示例 3:只显示 Y 轴方向网格(聚焦数值)

plt.plot(x, y)plt.title("Test show Y ")plt.grid(axis='y')  # 只画水平线,适合对比数值大小plt.show()
适用场景:柱状图、排名对比,水平参考线让数值对比更直观。

示例 4:自定义样式 —— 打造"高级灰"风格(推荐)

import numpy as npimport matplotlib.pyplot as pltimport osimport matplotlib.font_manager as fm# =============== 1. 字体配置(解决报错的核心) ===============font_path = "simhei.ttf"  # 确保你已经在当前目录上传了 simhei.ttfif not os.path.exists(font_path):    font_path = "/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc"  # 备用系统字体prop = fm.FontProperties(fname=font_path)plt.rcParams['axes.unicode_minus'] = Falsex = np.linspace(0, 10, 50)y = np.sin(x)plt.figure(figsize=(10, 6))plt.plot(x, y, color='#2E86AB', linewidth=2.5, label='sin(x)')# 高级网格线配置plt.grid(    color='#CCCCCC',      # 浅灰色,不抢数据风头    linestyle='--',       # 虚线,更轻盈    linewidth=0.8,        # 细线    alpha=0.7            # 半透明,融入背景)# 注意:这里都添加了 fontproperties=propplt.title('正弦函数曲线', fontsize=16, fontweight='bold', pad=15, fontproperties=prop)plt.xlabel('X 轴(弧度)', fontsize=12, fontproperties=prop)plt.ylabel('Y 轴(函数值)', fontsize=12, fontproperties=prop)plt.legend(prop=prop)plt.show()
效果:浅灰色虚线网格,若隐若现,既提供参考又不喧宾夺主。

四、进阶技巧:主次刻度网格

import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.ticker import AutoMinorLocatorx = np.linspace(0, 10, 100)y = np.sin(x)fig, ax = plt.subplots(figsize=(10, 6))ax.plot(x, y, color='#E74C3C', linewidth=2)# 开启次刻度ax.xaxis.set_minor_locator(AutoMinorLocator())ax.yaxis.set_minor_locator(AutoMinorLocator())# 主刻度网格:深色实线ax.grid(which='major', color='#999999', linestyle='-', linewidth=1, alpha=0.5)# 次刻度网格:浅色点线ax.grid(which='minor', color='#CCCCCC', linestyle=':', linewidth=0.5, alpha=0.3)ax.set_title('demo', fontsize=16)plt.show()
效果:主刻度用深色实线,次刻度用浅色点线,层次感拉满!

五、实战:完整专业图表模板

import numpy as npimport matplotlib.pyplot as pltimport osimport matplotlib.font_manager as fm# ========== 全局配置 ==========font_path = "simhei.ttf"  # 确保你已经在当前目录上传了 simhei.ttfif not os.path.exists(font_path):    font_path = "/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc"  # 备用系统字体prop = fm.FontProperties(fname=font_path)plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题# ========== 数据 ==========months = ['1月', '2月', '3月', '4月', '5月', '6月']sales = [120, 135, 148, 162, 155, 178]# ========== 绘图 ==========fig, ax = plt.subplots(figsize=(10, 6))ax.plot(months, sales,         marker='o', markersize=10,        markerfacecolor='white', markeredgecolor='#E74C3C',        color='#2E86AB', linewidth=2.5)# 数值标注(注意这里加了 fontproperties=prop)for i, v in enumerate(sales):    ax.text(i, v + 3, f'{v}万', ha='center', fontsize=11, color='#333', fontproperties=prop)# ========== 标题和标签(重点:全部加上 fontproperties=prop) ==========ax.set_title('2026年上半年销售额趋势', fontsize=18, fontweight='bold', pad=20, fontproperties=prop)ax.set_xlabel('月份', fontsize=13, labelpad=10, fontproperties=prop)ax.set_ylabel('销售额(万元)', fontsize=13, labelpad=10, fontproperties=prop)# ========== 网格线(重点!)==========ax.grid(    color='#E0E0E0',      # 极浅灰    linestyle='--',       # 虚线    linewidth=0.8,    alpha=0.8)# ========== 美化细节 ==========ax.set_ylim(100, 200)ax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)plt.tight_layout()plt.show()

六、常见误区 & 避坑指南

❌ 错误做法
✅ 正确做法
原因
网格线颜色太深
用浅灰 + 半透明
网格是配角,不能抢数据风头
网格线太粗
linewidth=0.5~1
细线更精致
全部用实线
推荐虚线或点线
实线网格会让图表显得"拥挤"
忽略 alpha
设置 alpha=0.3~0.7
半透明让网格融入背景
主次刻度混用
主刻度实线 + 次刻度点线
层次感,避免视觉混乱

七、参数速查卡

# 极简版plt.grid()  # 默认灰色实线双向网格# 标准版plt.grid(color='#CCCCCC', linestyle='--', linewidth=0.8, alpha=0.7)# 高级版(面向对象)ax.grid(which='major', color='#999', linestyle='-', linewidth=1, alpha=0.5)ax.grid(which='minor', color='#CCC', linestyle=':', linewidth=0.5, alpha=0.3)

八、今日练习

  1. 基础题:绘制一条折线图,添加默认网格线

  2. 进阶题:只显示 Y 轴方向的浅灰色虚线网格,透明度 0.5

  3. 挑战题:结合主次刻度,绘制一张带双层网格的专业图表

九、总结

今天我们掌握了 Matplotlib 网格线的核心用法:

  • ✅ plt.grid() —— 一键开启/关闭网格

  • ✅ axis='x'/'y'/'both' —— 控制网格方向

  • ✅ color + linestyle + linewidth + alpha —— 四件套定制样式

  • ✅ which='major'/'minor'/'both' —— 主次刻度分层

  • ✅ 黄金法则:浅、细、虚、半透明 = 专业感

🎯 今日金句:网格线是图表的"隐形脚手架"——好的脚手架看不见,但缺了它,再漂亮的数据也会站不稳。

最新文章

随机文章