一、为什么你的图表看起来"很业余"?
先来看两张对比图:
❌ 没有网格线 —— 数据点孤零零地飘在空白画布上,读者很难快速定位数值
✅ 加了网格线 —— 像坐标纸一样,一眼就能读出数据对应的坐标值
网格线(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()

六、常见误区 & 避坑指南
七、参数速查卡
# 极简版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)
八、今日练习
基础题:绘制一条折线图,添加默认网格线
进阶题:只显示 Y 轴方向的浅灰色虚线网格,透明度 0.5
挑战题:结合主次刻度,绘制一张带双层网格的专业图表
九、总结
今天我们掌握了 Matplotlib 网格线的核心用法:
✅ plt.grid() —— 一键开启/关闭网格
✅ axis='x'/'y'/'both' —— 控制网格方向
✅ color + linestyle + linewidth + alpha —— 四件套定制样式
✅ which='major'/'minor'/'both' —— 主次刻度分层
✅ 黄金法则:浅、细、虚、半透明 = 专业感
🎯 今日金句:网格线是图表的"隐形脚手架"——好的脚手架看不见,但缺了它,再漂亮的数据也会站不稳。