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实现linux服务器批量修改密码并生成execl
Apr 22 Python
使用Django的模版来配合字符串翻译工作
Jul 27 Python
Django视图之ORM数据库查询操作API的实例
Oct 27 Python
Window 64位下python3.6.2环境搭建图文教程
Sep 19 Python
解决Python pandas plot输出图形中显示中文乱码问题
Dec 12 Python
Python使用requests提交HTTP表单的方法
Dec 26 Python
python导入坐标点的具体操作
May 10 Python
Python 实现数组相减示例
Dec 27 Python
python数据预处理 :数据抽样解析
Feb 24 Python
Python如何批量生成和调用变量
Nov 21 Python
python实现简单猜单词游戏
Dec 24 Python
Pytorch如何切换 cpu和gpu的使用详解
Mar 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
php 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
2012/09/04 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
Javascript 写的简单进度条控件
2008/01/22 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
js实现二级菜单点击显示当前内容效果
2018/04/28 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
python list语法学习(带例子)
2013/11/01 Python
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
python好玩的项目—色情图片识别代码分享
2017/11/07 Python
全面分析Python的优点和缺点
2018/02/07 Python
tensorflow 获取变量&打印权值的实例讲解
2018/06/14 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
使用Python调取任意数字资产钱包余额功能
2019/08/15 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
Python中 Global和Nonlocal的用法详解
2020/01/20 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
电大毕业自我鉴定
2014/02/03 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript
MySQL限制查询和数据排序介绍
2022/03/25 MySQL