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使用mysqldb连接数据库操作方法示例详解
Dec 03 Python
Python更新数据库脚本两种方法及对比介绍
Jul 27 Python
Python线性回归实战分析
Feb 01 Python
Python从使用线程到使用async/await的深入讲解
Sep 16 Python
python命名空间(namespace)简单介绍
Aug 10 Python
Python字节单位转换实例
Dec 05 Python
Python tkinter实现图片标注功能(完整代码)
Dec 08 Python
python连接打印机实现打印文档、图片、pdf文件等功能
Feb 07 Python
python实现ftp文件传输系统(案例分析)
Mar 20 Python
pip install 使用国内镜像的方法示例
Apr 03 Python
pandas.DataFrame.drop_duplicates 用法介绍
Jul 06 Python
python 实现"神经衰弱"翻牌游戏
Nov 09 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脚本的10个技巧(3)
2006/10/09 PHP
逆序二维数组插入一元素的php代码
2012/06/08 PHP
php eval函数一句话木马代码
2015/05/21 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
跟我学习javascript的定时器
2015/11/19 Javascript
基于PHP和Mysql相结合使用jqGrid读取数据并显示
2015/12/02 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
jQuery Validation Plugin验证插件手动验证
2016/01/26 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
React优化子组件render的使用
2019/05/12 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
js实现验证码功能
2020/07/24 Javascript
jQuery插件实现图片轮播效果
2020/10/19 jQuery
利用python写个下载teahour音频的小脚本
2017/05/08 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
由面试题加深对Django的认识理解
2019/07/19 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
python梯度下降算法的实现
2020/02/24 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
La Senza官网:北美顶尖性感内衣品牌
2018/08/03 全球购物
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
正隆泰信息技术有限公司上机题
2012/06/14 面试题
义务教育学校标准化建设汇报材料
2014/08/16 职场文书
收入证明申请书
2015/06/12 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js
python开发人人对战的五子棋小游戏
2022/05/02 Python
详解Go语言中Get/Post请求测试
2022/06/01 Golang