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实现kNN算法
Dec 20 Python
对python判断是否回文数的实例详解
Feb 08 Python
Python使用MyQR制作专属动态彩色二维码功能
Jun 04 Python
对python3 Serial 串口助手的接收读取数据方法详解
Jun 12 Python
Python Pandas分组聚合的实现方法
Jul 02 Python
使用python爬取抖音视频列表信息
Jul 15 Python
简单了解django缓存方式及配置
Jul 19 Python
Python3的高阶函数map,reduce,filter的示例详解
Jul 23 Python
用Python生成HTML表格的方法示例
Mar 06 Python
基于Python测试程序是否有错误
May 16 Python
使用BeautifulSoup4解析XML的方法小结
Dec 07 Python
安装pytorch时报sslerror错误的解决方案
May 17 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
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
PHP输出XML到页面的3种方法详解
2013/06/06 PHP
Laravel日志用法详解
2016/10/09 PHP
php 判断过去离现在几年的函数(实例代码)
2016/11/15 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
php二维数组按某个键值排序的实例讲解
2019/02/15 PHP
分享20款好玩的jQuery游戏
2011/04/17 Javascript
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
jQuery随机切换图片的小例子
2013/04/18 Javascript
js获取html页面节点方法(递归方式)
2013/12/13 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
js实现登录验证码
2016/12/22 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
理解Koa2中的async&await的用法
2018/02/05 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
解析Python中while true的使用
2015/10/13 Python
Python中__init__.py文件的作用详解
2016/09/18 Python
scrapy spider的几种爬取方式实例代码
2018/01/25 Python
python实现支付宝当面付(扫码支付)功能
2018/05/30 Python
python求最大值,不使用内置函数的实现方法
2019/07/09 Python
django-利用session机制实现唯一登录的例子
2020/03/16 Python
Clarks鞋美国官网:全球领军鞋履品牌
2017/05/13 全球购物
历史学专业毕业生求职信
2013/09/27 职场文书
实习鉴定范文
2013/12/19 职场文书
2014年个人债务授权委托书范本
2014/09/22 职场文书
小学工作总结2015
2015/05/04 职场文书
抢劫罪辩护词
2015/05/21 职场文书
小学教育见习总结
2015/06/23 职场文书
浅谈react useEffect闭包的坑
2021/06/08 Javascript
如何利用python实现列表嵌套字典取值
2022/06/10 Python