matplotlib grid()设置网格线外观的实现


Posted in Python onFebruary 22, 2021

grid()函数概述

grid()函数用于设置绘图区网格线。
grid()的函数签名为matplotlib.pyplot.grid(b=None, which='major', axis='both', **kwargs)
grid()的参数如下:

  • b:是否显示网格线。布尔值或None,可选参数。如果没有关键字参数,则bTrue,如果bNone且没有关键字参数,相当于切换网格线的可见性。
  • which:网格线显示的尺度。字符串,可选参数,取值范围为{'major', 'minor', 'both'},默认为'both''major'为主刻度、'minor'为次刻度。
  • axis:选择网格线显示的轴。字符串,可选参数,取值范围为{'both', 'x', 'y'},默认为'both'`。
  • **kwargsLine2D线条对象属性。

grid()的返回值为None

grid()函数演示

matplotlib grid()设置网格线外观的实现

import matplotlib.pyplot as plt

plt.subplot(341)
# grid()默认样式
plt.plot([1, 1])
plt.grid()
plt.annotate('grid()', (0, 1))
plt.subplot(342)
# 因为默认没有网格线,所以grid(None)显示网格线
plt.plot([1, 1])
plt.grid(None)
plt.annotate('grid(None)', (0, 1))
plt.subplot(343)
# 因为设置了网格线,所以grid(None)切换为不显示网格线
plt.plot([1, 1])
plt.grid(True)
plt.grid(None)
plt.annotate('grid(None)', (0, 1))
plt.subplot(344)
# 因为默认没有网格线
plt.plot([1, 1])
plt.annotate("default", (0, 1))
plt.subplot(345)
# 只显示主刻度网格线
plt.plot([1, 1])
plt.grid(which='major')
plt.annotate("which='major'", (0, 1))
plt.subplot(346)
# 只显示次刻度网格线,因为没有次刻度,所以无网格线
plt.plot([1, 1])
plt.grid(which='minor')
plt.annotate("which='minor'", (0, 1))
plt.subplot(347)
# 同时显示主刻度、次刻度网格线
plt.plot([1, 1])
plt.grid(which='both')
plt.annotate("which='both'", (0, 1))
plt.subplot(348)
plt.plot([1, 1])
# 默认同时显示主刻度、次刻度网格线
plt.grid()
plt.annotate("default", (0, 1))
plt.subplot(349)
# 只显示x轴网格线
plt.plot([1, 1])
plt.grid(axis='x')
plt.annotate("axis='x'", (0, 1))
plt.subplot(3,4,10)
# 只显示y轴网格线
plt.plot([1, 1])
plt.grid(axis='y')
plt.annotate("axis='y'", (0, 1))
plt.subplot(3,4,11)
# 同时显示xy轴网格线
plt.plot([1, 1])
plt.grid(axis='both')
plt.annotate("axis='both'", (0, 1))
plt.subplot(3,4,12)
# 默认显示xy轴网格线
plt.plot([1, 1])
plt.grid()
plt.annotate("default", (0, 1))
plt.show()

原理

pyplot.grid()其实调用的是gca().grid(),即Aexs.grid()

底层相关函数有:
Axis.grid()

Axes.grid()源码(matplotlib/Axes/_base.py

def grid(self, b=None, which='major', axis='both', **kwargs):
    cbook._check_in_list(['x', 'y', 'both'], axis=axis)
    if axis in ['x', 'both']:
      self.xaxis.grid(b, which=which, **kwargs)
    if axis in ['y', 'both']:
      self.yaxis.grid(b, which=which, **kwargs)

xaxisXAxis类的实例,yaxisYAxis类的实例,XAxisYAxis类的基类为Axis

Axis.grid()源码(matplotlib/axis.py

def grid(self, b=None, which='major', **kwargs):
  if b is not None:
    if 'visible' in kwargs and bool(b) != bool(kwargs['visible']):
      raise ValueError(
        "'b' and 'visible' specify inconsistent grid visibilities")
    if kwargs and not b: # something false-like but not None
      cbook._warn_external('First parameter to grid() is false, '
                 'but line properties are supplied. The '
                 'grid will be enabled.')
      b = True
  which = which.lower()
  cbook._check_in_list(['major', 'minor', 'both'], which=which)
  gridkw = {'grid_' + item[0]: item[1] for item in kwargs.items()}
  if 'grid_visible' in gridkw:
    forced_visibility = True
    gridkw['gridOn'] = gridkw.pop('grid_visible')
  else:
    forced_visibility = False

  if which in ['minor', 'both']:
    if b is None and not forced_visibility:
      gridkw['gridOn'] = not self._minor_tick_kw['gridOn']
    elif b is not None:
      gridkw['gridOn'] = b
    self.set_tick_params(which='minor', **gridkw)
  if which in ['major', 'both']:
    if b is None and not forced_visibility:
      gridkw['gridOn'] = not self._major_tick_kw['gridOn']
    elif b is not None:
      gridkw['gridOn'] = b
    self.set_tick_params(which='major', **gridkw)
  self.stale = True

到此这篇关于matplotlib grid()设置网格线外观的实现的文章就介绍到这了,更多相关matplotlib grid()网格线内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
详细介绍Python中的偏函数
Apr 27 Python
python执行get提交的方法
Apr 29 Python
Python回调函数用法实例详解
Jul 02 Python
python re正则匹配网页中图片url地址的方法
Dec 20 Python
Python嵌套式数据结构实例浅析
Mar 05 Python
anaconda中更改python版本的方法步骤
Jul 14 Python
python数据持久存储 pickle模块的基本使用方法解析
Aug 30 Python
Python实现CNN的多通道输入实例
Jan 17 Python
利用python实现平稳时间序列的建模方式
Jun 03 Python
如何用 Python 子进程关闭 Excel 自动化中的弹窗
May 07 Python
Flask搭建一个API服务器的步骤
May 28 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 Python
浅析python连接数据库的重要事项
Feb 22 #Python
python实现学生信息管理系统源码
Feb 22 #Python
python实现简单的学生管理系统
Feb 22 #Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 #Python
matplotlib之pyplot模块之标题(title()和suptitle())
Feb 22 #Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
Feb 22 #Python
python利用后缀表达式实现计算器功能
Feb 22 #Python
You might like
smarty实例教程
2006/11/19 PHP
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
php图片上传存储源码并且可以预览
2011/08/26 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
js 控制页面跳转的5种方法
2013/09/09 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
javascript中Date对象的使用总结
2016/11/21 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
axios 封装上传文件的请求方法
2018/09/26 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
JS手写一个自定义Promise操作示例
2020/03/16 Javascript
VSCode搭建React Native环境
2020/05/07 Javascript
小结Python用fork来创建子进程注意事项
2014/07/03 Python
Python+django实现简单的文件上传
2016/08/17 Python
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
Python之reload流程实例代码解析
2018/01/29 Python
python学习入门细节知识点
2018/03/29 Python
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
python微信好友数据分析详解
2018/11/19 Python
对python3新增的byte类型详解
2018/12/04 Python
详解如何减少python内存的消耗
2019/08/09 Python
使用python编写一个语音朗读闹钟功能的示例代码
2020/07/14 Python
Python存储读取HDF5文件代码解析
2020/11/25 Python
python 调整图片亮度的示例
2020/12/03 Python
Marc Jacobs彩妆官网:Marc Jacobs Beauty
2017/07/03 全球购物
欧尚俄罗斯网上超市:Auchan俄罗斯
2018/05/03 全球购物
高性能装备提升营地:Kammok
2019/02/27 全球购物
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
奖学金个人总结
2015/03/04 职场文书
辩护词格式
2015/05/22 职场文书
个人工作决心书
2015/09/22 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang