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的Django框架下使用django-tagging的教程
May 30 Python
ubuntu系统下 python链接mysql数据库的方法
Jan 09 Python
python下读取公私钥做加解密实例详解
Mar 29 Python
Python标准库sched模块使用指南
Jul 06 Python
Python的SimpleHTTPServer模块用处及使用方法简介
Jan 22 Python
Python OpenCV处理图像之图像像素点操作
Jul 10 Python
Python实现快速傅里叶变换的方法(FFT)
Jul 21 Python
Python+selenium点击网页上指定坐标的实例
Jul 05 Python
python+logging+yaml实现日志分割
Jul 22 Python
numpy库reshape用法详解
Apr 19 Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 20 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
Feb 20 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
咖啡常见的种类
2021/03/03 新手入门
PHP无限分类的类
2007/01/02 PHP
PHP安全防范技巧分享
2011/11/03 PHP
php网站地图生成类示例
2014/01/13 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
使用js画图之饼图
2015/01/12 Javascript
使用纯javascript实现放大镜效果
2015/03/18 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
解决vuecli3.0热更新失效的问题
2018/09/19 Javascript
js中switch语句的学习笔记
2020/03/25 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
Python 错误和异常小结
2013/10/09 Python
python文件写入实例分析
2015/04/08 Python
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
Python如何判断数独是否合法
2016/09/08 Python
django url到views参数传递的实例
2019/07/19 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
html5 CSS过度-webkit-transition使用介绍
2013/07/02 HTML / CSS
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
给女朋友的道歉信
2014/01/10 职场文书
励志演讲稿800字
2014/08/21 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
戒赌保证书
2015/05/11 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang
彻底弄懂Python中的回调函数(callback)
2022/06/25 Python