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 相关文章推荐
PHP魔术方法__ISSET、__UNSET使用实例
Nov 25 Python
Python实现批量压缩图片
Jan 25 Python
对python中array.sum(axis=?)的用法介绍
Jun 28 Python
浅谈Python接口对json串的处理方法
Dec 19 Python
Flask配置Cors跨域的实现
Jul 12 Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
Jan 17 Python
详解pandas中iloc, loc和ix的区别和联系
Mar 09 Python
如何利用python web框架做文件流下载的实现示例
Jun 02 Python
如何对python的字典进行排序
Jun 19 Python
python Cartopy的基础使用详解
Nov 01 Python
Pytorch1.5.1版本安装的方法步骤
Dec 31 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
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
百度站点地图(百度sitemap)生成方法分享
2014/01/09 PHP
一个PHP的ZIP压缩类分享
2014/05/04 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
yii2中使用Active Record模式的方法
2016/01/09 PHP
PHP6新特性分析
2016/03/03 PHP
Zend Framework动作助手FlashMessenger用法详解
2016/03/05 PHP
yii使用bootstrap分页样式的实例
2017/01/17 PHP
redis+php实现微博(三)微博列表功能详解
2019/09/23 PHP
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
jQuery autocomplete插件修改
2009/04/17 Javascript
javascript json2 使用方法
2010/03/16 Javascript
什么是json和jsonp,jQuery json实例详详细说明
2012/12/11 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
jQuery实现的图文高亮滚动切换特效实例
2015/08/10 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
[03:42]2014DOTA2西雅图国际邀请赛7月9日TOPPLAY
2014/07/09 DOTA
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
2019/02/27 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
WiFi云数码相框:Nixplay
2018/07/05 全球购物
String是最基本的数据类型吗?
2013/06/13 面试题
数控技术应用个人求职信范文
2014/02/03 职场文书
大四学生个人总结
2015/02/15 职场文书
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang
一条 SQL 语句执行过程
2022/03/17 MySQL
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python