• 售前

  • 售后

热门帖子
入门百科

matplotlib grid()设置网格线外观的实现

[复制链接]
叫啥不行靠 显示全部楼层 发表于 2021-10-25 19:50:22 |阅读模式 打印 上一主题 下一主题
grid()函数概述
  1. grid()
复制代码
函数用于设置画图区网格线。
  1. grid()
复制代码
的函数署名为
  1. matplotlib.pyplot.grid(b=None, which='major', axis='both', **kwargs)
复制代码
  1. grid()
复制代码
的参数如下:
      
    1. b
    复制代码
    :是否表现网格线。布尔值或
    1. None
    复制代码
    ,可选参数。如果没有关键字参数,则
    1. b
    复制代码
    1. True
    复制代码
    ,如果
    1. b
    复制代码
    1. None
    复制代码
    且没有关键字参数,相称于切换网格线的可见性。  
    1. which
    复制代码
    :网格线表现的尺度。字符串,可选参数,取值范围为
    1. {'major', 'minor', 'both'}
    复制代码
    ,默以为
    1. 'both'
    复制代码
    1. 'major'
    复制代码
    为主刻度、
    1. 'minor'
    复制代码
    为次刻度。  
    1. axis
    复制代码
    :选择网格线表现的轴。字符串,可选参数,取值范围为
    1. {'both', 'x', 'y'},默认为
    复制代码
    'both'`。  
    1. **kwargs
    复制代码
    1. Line2D
    复制代码
    线条对象属性。
  1. grid()
复制代码
的返回值为
  1. None
复制代码

grid()函数演示

  1. import matplotlib.pyplot as plt
  2. plt.subplot(341)
  3. # grid()默认样式
  4. plt.plot([1, 1])
  5. plt.grid()
  6. plt.annotate('grid()', (0, 1))
  7. plt.subplot(342)
  8. # 因为默认没有网格线,所以grid(None)显示网格线
  9. plt.plot([1, 1])
  10. plt.grid(None)
  11. plt.annotate('grid(None)', (0, 1))
  12. plt.subplot(343)
  13. # 因为设置了网格线,所以grid(None)切换为不显示网格线
  14. plt.plot([1, 1])
  15. plt.grid(True)
  16. plt.grid(None)
  17. plt.annotate('grid(None)', (0, 1))
  18. plt.subplot(344)
  19. # 因为默认没有网格线
  20. plt.plot([1, 1])
  21. plt.annotate("default", (0, 1))
  22. plt.subplot(345)
  23. # 只显示主刻度网格线
  24. plt.plot([1, 1])
  25. plt.grid(which='major')
  26. plt.annotate("which='major'", (0, 1))
  27. plt.subplot(346)
  28. # 只显示次刻度网格线,因为没有次刻度,所以无网格线
  29. plt.plot([1, 1])
  30. plt.grid(which='minor')
  31. plt.annotate("which='minor'", (0, 1))
  32. plt.subplot(347)
  33. # 同时显示主刻度、次刻度网格线
  34. plt.plot([1, 1])
  35. plt.grid(which='both')
  36. plt.annotate("which='both'", (0, 1))
  37. plt.subplot(348)
  38. plt.plot([1, 1])
  39. # 默认同时显示主刻度、次刻度网格线
  40. plt.grid()
  41. plt.annotate("default", (0, 1))
  42. plt.subplot(349)
  43. # 只显示x轴网格线
  44. plt.plot([1, 1])
  45. plt.grid(axis='x')
  46. plt.annotate("axis='x'", (0, 1))
  47. plt.subplot(3,4,10)
  48. # 只显示y轴网格线
  49. plt.plot([1, 1])
  50. plt.grid(axis='y')
  51. plt.annotate("axis='y'", (0, 1))
  52. plt.subplot(3,4,11)
  53. # 同时显示xy轴网格线
  54. plt.plot([1, 1])
  55. plt.grid(axis='both')
  56. plt.annotate("axis='both'", (0, 1))
  57. plt.subplot(3,4,12)
  58. # 默认显示xy轴网格线
  59. plt.plot([1, 1])
  60. plt.grid()
  61. plt.annotate("default", (0, 1))
  62. plt.show()
复制代码
原理
  1. pyplot.grid()
复制代码
实在调用的是
  1. gca().grid()
复制代码
,即
  1. Aexs.grid()
复制代码

底层相关函数有:
  1. Axis.grid()
复制代码
  1. Axes.grid()
复制代码
源码(
  1. matplotlib/Axes/_base.py
复制代码
  1. def grid(self, b=None, which='major', axis='both', **kwargs):
  2.     cbook._check_in_list(['x', 'y', 'both'], axis=axis)
  3.     if axis in ['x', 'both']:
  4.       self.xaxis.grid(b, which=which, **kwargs)
  5.     if axis in ['y', 'both']:
  6.       self.yaxis.grid(b, which=which, **kwargs)
复制代码
  1. xaxis
复制代码
  1. XAxis
复制代码
类的实例,
  1. yaxis
复制代码
  1. YAxis
复制代码
类的实例,
  1. XAxis
复制代码
  1. YAxis
复制代码
类的基类为
  1. Axis
复制代码
  1. Axis.grid()
复制代码
源码(
  1. matplotlib/axis.py
复制代码
  1. def grid(self, b=None, which='major', **kwargs):
  2.   if b is not None:
  3.     if 'visible' in kwargs and bool(b) != bool(kwargs['visible']):
  4.       raise ValueError(
  5.         "'b' and 'visible' specify inconsistent grid visibilities")
  6.     if kwargs and not b: # something false-like but not None
  7.       cbook._warn_external('First parameter to grid() is false, '
  8.                  'but line properties are supplied. The '
  9.                  'grid will be enabled.')
  10.       b = True
  11.   which = which.lower()
  12.   cbook._check_in_list(['major', 'minor', 'both'], which=which)
  13.   gridkw = {'grid_' + item[0]: item[1] for item in kwargs.items()}
  14.   if 'grid_visible' in gridkw:
  15.     forced_visibility = True
  16.     gridkw['gridOn'] = gridkw.pop('grid_visible')
  17.   else:
  18.     forced_visibility = False
  19.   if which in ['minor', 'both']:
  20.     if b is None and not forced_visibility:
  21.       gridkw['gridOn'] = not self._minor_tick_kw['gridOn']
  22.     elif b is not None:
  23.       gridkw['gridOn'] = b
  24.     self.set_tick_params(which='minor', **gridkw)
  25.   if which in ['major', 'both']:
  26.     if b is None and not forced_visibility:
  27.       gridkw['gridOn'] = not self._major_tick_kw['gridOn']
  28.     elif b is not None:
  29.       gridkw['gridOn'] = b
  30.     self.set_tick_params(which='major', **gridkw)
  31.   self.stale = True
复制代码
到此这篇关于matplotlib grid()设置网格线外貌的实现的文章就先容到这了,更多相关matplotlib grid()网格线内容请搜索脚本之家从前的文章或继承欣赏下面的相关文章盼望大家以后多多支持脚本之家!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作