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中optparse模块使用浅析
Jan 01 Python
python实现生命游戏的示例代码(Game of Life)
Jan 24 Python
Python反转序列的方法实例分析
Mar 21 Python
对numpy数据写入文件的方法讲解
Jul 09 Python
对django中render()与render_to_response()的区别详解
Oct 16 Python
python将一组数分成每3个一组的实例
Nov 14 Python
用python一行代码得到数组中某个元素的个数方法
Jan 28 Python
Linux上使用Python统计每天的键盘输入次数
Apr 17 Python
使用Python中的reduce()函数求积的实例
Jun 28 Python
pycharm通过ssh连接远程服务器教程
Feb 12 Python
基于python模拟bfs和dfs代码实例
Nov 19 Python
Python语法学习之进程的创建与常用方法详解
Apr 08 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
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
PHP gbk环境下json_dencode传送来的汉字
2012/11/13 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
基于jQuery架构javascript基础体系
2011/01/01 Javascript
javascript延时加载之defer测试
2012/12/28 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
2016/01/13 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
2017/12/28 Javascript
vue发送ajax请求详解
2018/10/09 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
Python中用于返回绝对值的abs()方法
2015/05/14 Python
Python获取邮件地址的方法
2015/07/10 Python
Python工程师面试题 与Python基础语法相关
2016/01/14 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
Python短信轰炸的代码
2020/03/25 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
烹调加工管理制度
2014/02/04 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
英语感谢信范文
2015/01/20 职场文书
辞职信范文大全
2015/03/02 职场文书
nginx配置虚拟主机的详细步骤
2021/07/21 Servers
Golang解析JSON对象
2022/04/30 Golang
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL