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下所有挂载点(mount points)的方法
Apr 29 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
Oct 13 Python
Python用zip函数同时遍历多个迭代器示例详解
Nov 14 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
Mar 15 Python
解决Pycharm无法import自己安装的第三方module问题
May 18 Python
Python3.4 splinter(模拟填写表单)使用方法
Oct 13 Python
在pycharm中设置显示行数的方法
Jan 16 Python
jenkins配置python脚本定时任务过程图解
Oct 29 Python
pandas的相关系数与协方差实例
Dec 27 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
May 27 Python
python利用opencv保存、播放视频
Nov 02 Python
python代码实现图书管理系统
Nov 30 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时间戳转换的示例
2014/03/31 PHP
laravel 时间格式转时间戳的例子
2019/10/11 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
2020/01/04 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
Python中 Lambda表达式全面解析
2016/11/28 Python
python Tkinter版学生管理系统
2019/02/20 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
python3实现字符串操作的实例代码
2019/04/16 Python
解决Tensorflow占用GPU显存问题
2020/02/03 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
美国电视购物:QVC
2017/02/06 全球购物
泰国健康和美容服务预订网站:GoWabi
2019/06/03 全球购物
土木工程应届生求职信
2013/10/31 职场文书
工程师岗位职责
2013/11/08 职场文书
美德好少年主要事迹
2014/01/29 职场文书
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
责任担保书范文
2014/05/21 职场文书
大学生实习证明范本
2014/09/19 职场文书
先进党组织事迹材料
2014/12/26 职场文书
颐和园导游词400字
2015/01/30 职场文书
2015年政协委员工作总结
2015/05/20 职场文书