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抓taobao图片爬虫
Oct 26 Python
python使用BeautifulSoup分析网页信息的方法
Apr 04 Python
详解Python的单元测试
Apr 28 Python
python通过apply使用元祖和列表调用函数实例
May 26 Python
Python爬虫工程师面试问题总结
Mar 22 Python
flask框架使用orm连接数据库的方法示例
Jul 16 Python
python实现图片批量压缩程序
Jul 23 Python
Python OpenCV读取png图像转成jpg图像存储的方法
Oct 28 Python
pandas读取CSV文件时查看修改各列的数据类型格式
Jul 07 Python
在tensorflow中设置保存checkpoint的最大数量实例
Jan 21 Python
Python如何读写二进制数组数据
Aug 01 Python
Python中过滤字符串列表的方法
Dec 22 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
PHP strtok()函数的优点分析
2010/03/02 PHP
PHP积分兑换接口实例
2015/02/09 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
2019/08/02 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
Python中pygame安装方法图文详解
2015/11/11 Python
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
Python实现获取命令行输出结果的方法
2017/06/10 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
Python爬取数据并写入MySQL数据库的实例
2018/06/21 Python
在Python中增加和插入元素的示例
2018/11/01 Python
对Python使用mfcc的两种方式详解
2019/01/09 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
职专应届生求职信
2013/11/16 职场文书
工会主席事迹材料
2014/06/03 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
工人先锋号申报材料
2014/12/29 职场文书
离婚协议书的范本
2015/01/27 职场文书
地心历险记观后感
2015/06/15 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
vue实现移动端div拖动效果
2022/03/03 Vue.js
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers