0.本集概览

1.剖析plt和坐标轴对象ax的关系

2.主刻度与次刻度的概念

3.格式生成器与定位器的概念

4.数值型主次刻度与自定义格式生成器函数举例

5.日期型主次刻度举例

这一集,我们专门来谈谈坐标轴的有关内容。

1.plt和坐标轴对象ax的关系

先看以下两段代码,他们实现的是同样的功能:绘制正余弦两个子图:

代码一:

import numpy as np

import matplotlib.pyplot as plt

x = np.linspace(0,10,1000)

plt.subplot(2, 1, 1)

plt.plot(x, np.sin(x)) #用plt绘制第一个子图

plt.subplot(2,1,2)

plt.plot(x,np.cos(x)) #用plt绘制第二个子图

plt.show()

代码二:

import numpy as np

import matplotlib.pyplot as plt

x = np.linspace(0,10,1000)

fig, ax = plt.subplots(2,1)

ax[0].plot(x, np.sin(x)) #用对应的坐标轴对象画第一个子图

ax[1].plot(x, np.cos(x)) #用对应的坐标轴对象画第二个子图

plt.show()

可以看出,这两段代码所达到的效果是一样的。 代码段一采用的是MATLAB风格的接口 ,这是由于Matplotlib最初是作为MATLAB替代品的历史缘故。MATLAB风格的 工具 位于pyplot 即plt接口中,因此我们可以采用plt.plot函数来进行绘图。这种接口最重要的特征就是“有状态”:他表征当前所位于的子图状态,并持续跟踪当前的图形和坐标轴。并可以通过plt.gcf()获取当前的活动Figure对象,利用plt.gca()获取当前活动的axes坐标轴对象。

而 代码段二所采用的是完全不同的第二种模式,即面向对象接口 ,他在绘图的过程之中不再受到当前所谓“活动”图形及坐标轴的限制,因为他一次性就从subplots函数中获取了表征所有坐标轴的ax数组和Figure对象。

补充一点,坐标轴对象ax包含了横轴、纵轴所包围的区域内的一切(各坐标轴、刻度、标签、图形等)

我最后来说说plt和ax二者的联系,plt的绝大多数方法都有ax的对应版本,有的一模一样,有的稍作改变:

plt.plot() = ax.plot()

plt.legend() = ax.legend()

plt.xlabel()/ylabel()/xlim()/ylim()/title() =

ax.setxlabel()/setylabel()/setxlim()/set_ylim()/set_title()

当然,如果用ax来设置这些参数的话,可以放在一个函数中,用多个关键字进行表征和设置

import numpy as np

import matplotlib.pyplot as plt

x = np.linspace(0,10,1000)

ax = plt.axes()

ax.plot(x,np.sin(x))

ax.set(xlim=(0,10), ylim=(-2,2), xlabel='x', ylabel='sin(x)',title='plot sin(x)')

plt.show()

值得一提的是,在代码段一中我们还可以通过ax = plt.subplot(2, 1, 1)或ax = plt.gca()这两种方法来获得当前的坐标轴对象ax。

2.主刻度与次刻度的概念

强化了坐标轴ax的概念之后,我们再进入今天另一个重要的话题,坐标轴的主次刻度。

每一个坐标轴都有主要刻度线与次要刻度线。主要刻度更大更显著,而次要刻度往往更小。主刻度都显示为一个较大的刻度线和标签,而次要刻度都显示为一个较小的刻度线,而不显示标签。主次刻度这件事儿, 大家想想我们用过的尺子就知道了 ,厘米的地方刻度要长而明显,并且有数字标识,而毫米的地方刻度则要短,并且没有数字标识。这么做既能满足刻度线的完整性,又能突出刻度标识的重点。

我们先举一个例子:

import numpy as np

import matplotlib as mpl

import matplotlib.pyplot as plt

from matplotlib.ticker import MultipleLocator, FormatStrFormatter

fig = plt.figure()

xmajorLocator = MultipleLocator(20) # 将x主刻度标签设置为20的倍数

xmajorFormatter = FormatStrFormatter('%1.1f') # 设置x轴标签文本的格式

xminorLocator = MultipleLocator(5) # 将x轴次刻度标签设置为5的倍数

ymajorLocator = MultipleLocator(0.5) # 将y轴主刻度标签设置为0.5的倍数

ymajorFormatter = FormatStrFormatter('%1.1f') # 设置y轴标签文本的格式

yminorLocator = MultipleLocator(0.1) # 将此y轴次刻度标签设置为0.1的倍数

ax = plt.subplot(111)

ax.xaxis.set_major_locator(xmajorLocator)

ax.xaxis.set_major_formatter(xmajorFormatter)

ax.yaxis.set_major_locator(ymajorLocator)

ax.yaxis.set_major_formatter(ymajorFormatter)

# 显示次刻度标签的位置,没有标签文本

ax.xaxis.set_minor_locator(xminorLocator)

ax.yaxis.set_minor_locator(yminorLocator)

ax.xaxis.grid(True, which='major') # x坐标轴的网格使用主刻度

ax.yaxis.grid(True, which='minor') # y坐标轴的网格使用次刻度

t = np.arange(100)

s = np.sin(0.1*np.pi*t)*np.exp(-t*0.01)

plt.plot(t,s,'--r*')

plt.show()

这个例子中,我们设置了主刻度线和次刻度线,其中x轴主刻度线是20的整数倍,并且标明了刻度值,而次要刻度线是5的整数倍,省去了刻度值。y轴同理。

3.格式生成器与定位器

这里的核心是定位器和格式生成器两个概念,我们先分别生成X轴的主定位器、主格式生成器,再生成X轴的次定位器(由于X轴次要坐标没有刻度值,所以省去了次要格式生成器)

然后再利用坐标轴ax的xaxis.set_major_locator、xaxis.set_major_formatter和xaxis.set_minor_locator方法,分别对定位器和格式生成器进行赋值。

总结一下:我们就是通过定义每个坐标轴的locator和formatter对象,来完成刻线位置和标签这些属性的设置。

matlab中主次坐标,【基本工具】S02E20 坐标轴与主次刻度用法详解相关推荐

  1. linux中grep命令 菜鸟教程,linux grep正则表达式与grep用法详解

    需要大家牢记:正则表达式与通配符不一样,它们表示的含义并不相同 正则表达式只是字符串的一种描述,只有和支持正则表达式的工具相结合才能进行字符串处理.本文以grep为例来讲解正则表达式. grep命令 ...

  2. python中values是什么意思_Python values()与itervalues()的用法详解

    dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value: d = { 'Adam': 95, 'Li ...

  3. python中os.path.join()的循环用法_Python中.join()和os.path.join()两个函数的用法详解

    Python中有.join()和os.path.join()两个函数,具体作用如下: . join():    连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 ...

  4. python3 join函数_Python中.join()和os.path.join()两个函数的用法详解

    Python中有.join()和os.path.join()两个函数,具体作用如下: . join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 '' ...

  5. linux中mkswap命令使用方法,mkswap命令_Linux mkswap 命令用法详解:建立和设置SWAP交换分区...

    mkswap命令用于在一个文件或者设备上建立交换分区.在建立完之后要使用sawpon命令开始使用这个交换区.最后一个选择性参数指定了交换区的大小,但是这个参数是为了向后兼容设置的,没有使用的必要,一般 ...

  6. SQL中的left outer join,inner join,right outer join用法详解1

    LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行. LEFT JOIN 关键字语法 SELECT column_ ...

  7. html中字段是日期控件,jQuery日历插件datepicker用法详解

    jQuery是一款不可多得的非常优秀的javascript脚本开发库,而基于其上的很多插件也是非常规范和卓越的,如果错过这番美景真是太可惜了,比如datepicker这个插件. 一般MIS系统的前端, ...

  8. c语言中整形变量,C语言基本数据类型:整型(int)用法详解

    1.整型int C语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int是整型之一,一般被称为整型.以后,在不产生歧义的情况下,我们把整数类型和int都称为整 ...

  9. SQL中的left outer join,inner join,right outer join用法详解

    SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同. 连接类型                                       ...

最新文章

  1. Flink升级到1.4版本遇到的坑
  2. python最高版本-python最新版
  3. laravel使用的模板引擎 blade
  4. 脏读,不可重复读,幻读
  5. 大型网站技术架构:摘要与读书笔记
  6. AOP实践--利用MVC5 Filter实现登录状态判断
  7. ARP欺骗与嗅探入侵揭密--上篇(转)
  8. c语言试卷浙江理工大学杀人案件追踪,浙江理工大学c语言期末考试模拟试卷6 .pdf...
  9. 协程是什么?怎么来的?它有什么作用?
  10. 关于NTRIP、RTCM、NMEA的学习
  11. 【软件设计师教程】程序设计语言基础知识
  12. 计算机word excel试题,计算机基础WORD、EXCEL试题
  13. 农村市场谋定中国农民丰收节交易会 消费潜力持续正释放
  14. 「运维有小邓」搜索日志数据以作为网络安全情报
  15. 错题集:Censored!
  16. 3ds Max 基于PC系统的3D建模渲染和制作软件
  17. vue.js和vue.main.js下载地址
  18. android studio导入第三方库引发的问题和解决方法
  19. scratch3.0自定义logo
  20. elasticsearch从入门到入门系列(二)---快速入门C

热门文章

  1. WebApi入门到精通视频课程-夏昊-专题视频课程
  2. docker 部署 ES
  3. 收藏!!BAT 程序员们常用的开发工具
  4. 常见 LInux 系统进入单用户模式
  5. 如何用c语言去掉空格
  6. 90%汽车业创新来自电子业,九大IC原厂畅谈产业趋势
  7. 字节跳动携火山引擎云躬身入局 这朵云究竟要做成什么样子?
  8. 第1-5课:绘制柱形图和条形图
  9. 【C#】ip与无符号整型转换
  10. 启动WPS for Linux后,出现提示系统缺失字体解决办法