概述
很多时候为了可视化效果的美观,就不得不从细节上下手,本期我们就介绍一下绘图的网格线细节。在 matplotlib 中 Axes 对象提供了一个 grid()
方法用以开启或者关闭画布中的网格以及网格的主/次刻度,在改方法中用户可以自定义网格线的相关属性关于Line2D对象,详情见可视化之路(四)Line2D类详解。
。
# b: 指定是否显示网格线
# which: 指定这次更改的应用对象(主刻度轴还是次刻度轴)
# axis: 指定这次更改要应用的轴(X、Y、全部)
# kwargs:指定线条的Line2D属性
def grid(self, b=None, which='major', axis='both', **kwargs):
...
官网说如果 b 设置为 None,但是传递 Line2D 属性,则 b 参数失效,本质原因是:
TOGGLE = object()
UNSET = object()
visible = kwargs.pop('visible', UNSET)
if b is None:
// 如果kwargs传递了参数,则b=True
if visible is UNSET:
if kwargs: # grid(color='r')
b = True
else: # grid()
b = TOGGLE
else: # grid(visible=v)
b = visible
示例
下面的示例展示了如何自定义网格,包括网格线的颜色、线型和线宽,完整代码如下:
import matplotlib.pyplot as plt
import numpy as np
# plt.style.use("classic")
# fig画布;axes子图区域
fig, axes = plt.subplots(2, 3, figsize=(12, 4))
# 准备数据
x = np.arange(1, 11)
# 开启默认网格
axes[0][0].plot(x, x ** 3, 'g', lw=2)
axes[0][0].grid(True)
axes[0][0].set_title('default grid')
# 只开启X轴网格
axes[0][1].plot(x, x ** 3, 'r')
axes[0][1].grid(True, axis='x')
axes[0][1].set_title('only x grid')
# 只开启Y轴网格b
axes[0][2].plot(x, x ** 3, 'b')
axes[0][2].grid(True, axis='y')
axes[0][2].set_title('only y grid')
# 自定义网格颜色
axes[1][0].plot(x, x ** 3, 'g', lw=2)
axes[1][0].grid(True, color='red')
axes[1][0].set_title('customer grid1')
# 自定义网格线型
axes[1][1].plot(x, x ** 3, 'r', lw=2)
axes[1][1].grid(True, ls='dashed')
axes[1][1].set_title('customer grid2')
# 自定义线宽
axes[1][2].plot(x, x ** 3, 'b', lw=2)
axes[1][2].grid(True, lw=3.0)
axes[1][2].set_title('customer grid3')
fig.tight_layout()
plt.show()
画图结果如下:
往期回顾
- 【matplotlib】可视化解决方案——如何向画布添加交叉直线
- 【matplotlib】可视化解决方案——如何解决matplotlib中文乱码问题
- 【matplotlib】可视化解决方案——如何设置matplotlib风格集
- 【matplotlib】可视化解决方案——如何设置轴标签的透明度和大小
- 【matplotlib】可视化解决方案——如何向图表中添加数据表
- 【matplotlib】可视化解决方案——如何更改绘图区域背景颜色
- 【matplotlib】可视化解决方案——如何使用数学公式
- 【matplotlib】可视化解决方案——绘图刻度设置
- 【matplotlib】可视化解决方案——子图设置大标题问题解决方案
- 【matplotlib】可视化解决方案——子图间距问题解决方案
文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,相关的知识点也可进行分享,希望大家都能有所收获!!如果觉得我的文章写得还行,不妨支持一下。你的每一个转发、关注、点赞、评论都是对我最大的支持!