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中threading模块的几个常用方法
Jun 18 Python
Python工程师面试题 与Python基础语法相关
Jan 14 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
Jun 16 Python
Python中input与raw_input 之间的比较
Aug 20 Python
Python使用MD5加密算法对字符串进行加密操作示例
Mar 30 Python
利用python如何处理nc数据详解
May 23 Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 Python
.dcm格式文件软件读取及python处理详解
Jan 16 Python
python中的列表和元组区别分析
Dec 30 Python
解决pytorch-gpu 安装失败的记录
May 24 Python
Python 图片添加美颜效果
Apr 28 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 smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
javascript getElementsByName()的用法说明
2009/07/31 Javascript
表格 隔行换色升级版
2009/11/07 Javascript
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
javascript学习笔记(十九) 节点的操作实现代码
2012/06/20 Javascript
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
Vue全局分页组件的实现代码
2018/08/10 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
JavaScript DOM常用操作代码汇总
2020/07/03 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
python快速排序代码实例
2013/11/21 Python
Python中逗号的三种作用实例分析
2015/06/08 Python
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
Python分治法定义与应用实例详解
2017/07/28 Python
Pyqt5实现英文学习词典
2019/06/24 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
公务员政审个人鉴定
2014/02/25 职场文书
硕士研究生求职自荐信范文
2014/03/11 职场文书
校园环保建议书
2014/05/14 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
小学教育见习总结
2015/06/23 职场文书
2016年中秋节慰问信
2015/12/01 职场文书
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL