翼度科技»论坛 编程开发 python 查看内容

【matplotlib基础】--刻度

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
Matplotlib中刻度是用于在绘图中表示数据大小的工具。
刻度是坐标轴上的数字或标签,用于指示数据的大小或值,
通常以整数或小数表示,具体取决于坐标轴的类型和限制。
1. 主次刻度

默认的绘制时,坐标轴只有默认的主要刻度,如下所示:
  1. from matplotlib.ticker import MultipleLocator
  2. x = np.array(range(0, 100))
  3. y = np.random.randint(100, 200, 100)
  4. fig = plt.figure()
  5. ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
  6. #X轴的主要和次要刻度
  7. ax.xaxis.set_major_locator(MultipleLocator(20))
  8. ax.xaxis.set_minor_locator(MultipleLocator(2))
  9. #Y轴的主要和次要刻度
  10. ax.yaxis.set_major_locator(MultipleLocator(50))
  11. ax.yaxis.set_minor_locator(MultipleLocator(10))
  12. ax.plot(x, y)
复制代码

上面的示例中,
设置了X轴的主要刻度间隔20,次要刻度间隔2,也就是每2个主要刻度之间有10个次要刻度
设置了Y轴的主要刻度间隔50,次要刻度间隔10,也就是每2个主要刻度之间有5个次要刻度
次要刻度就是上面图中主要刻度之间稍短点的线。
2. 刻度样式

刻度的样式非常灵活,常见的有以下几种设置。
2.1. 隐藏刻度

隐藏刻度,只保留图形,这在做某些示意图的时候可能会用到。
  1. x = np.array(range(0, 100))
  2. y = np.random.randint(100, 200, 100)
  3. fig = plt.figure()
  4. ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
  5. #隐藏刻度
  6. ax.xaxis.set_major_locator(plt.NullLocator())
  7. ax.yaxis.set_major_locator(plt.NullLocator())
  8. ax.plot(x, y, color='g')
复制代码

2.2. 密度

密度是指刻度的间隔,如果图比较小,可以设置间隔大一些,反之则设置小一些。
  1. from matplotlib.ticker import MultipleLocator
  2. x = np.array(range(0, 100))
  3. y = np.random.randint(100, 200, 100)
  4. rows, cols = 2, 2
  5. grid = plt.GridSpec(rows, cols)
  6. ax = plt.subplot(grid[0, 0])
  7. ax.plot(x, y)
  8. ax.xaxis.set_major_locator(MultipleLocator(20))
  9. ax.yaxis.set_major_locator(MultipleLocator(50))
  10. ax = plt.subplot(grid[1, :])
  11. ax.plot(x, y)
  12. ax.xaxis.set_major_locator(MultipleLocator(10))
  13. ax.yaxis.set_major_locator(MultipleLocator(20))
复制代码

上例中,根据图形的大小,我们设置了刻度的不同密度
2.3. 颜色,大小,旋转

为了突出某些刻度值,有时候会需要修改那些刻度值的颜色和大小。
  1. x = np.array(range(0, 100))
  2. y = np.random.randint(100, 200, 100)
  3. fig = plt.figure()
  4. ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
  5. ax.xaxis.set_major_locator(MultipleLocator(10))
  6. obj = ax.get_xticklabels()[2]
  7. obj.set_size(20)
  8. obj.set_color("red")
  9. ax.plot(x, y, color='g')
复制代码

上面示例中,X轴刻度10被放大并且改成了红色
刻度的旋转一般用在刻度内容比较长的情况,比如下面的示例:
  1. x = np.array(
  2.     [
  3.         "2022-01-01",
  4.         "2022-02-01",
  5.         "2022-03-01",
  6.         "2022-04-01",
  7.         "2022-05-01",
  8.         "2022-06-01",
  9.         "2022-07-01",
  10.         "2022-08-01",
  11.         "2022-09-01",
  12.         "2022-10-01",
  13.     ]
  14. )
  15. y = np.random.randint(100, 200, 10)
  16. fig = plt.figure()
  17. ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
  18. ax.plot(x, y, color="g")
复制代码

由于X轴的刻度是日期,因为太长,所以会挤在一起,显示不清。
这时可以调整X轴刻度的角度,避免重合在一起。
  1. x = np.array(
  2.     [
  3.         "2022-01-01",
  4.         "2022-02-01",
  5.         "2022-03-01",
  6.         "2022-04-01",
  7.         "2022-05-01",
  8.         "2022-06-01",
  9.         "2022-07-01",
  10.         "2022-08-01",
  11.         "2022-09-01",
  12.         "2022-10-01",
  13.     ]
  14. )
  15. y = np.random.randint(100, 200, 10)
  16. fig = plt.figure()
  17. ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
  18. plt.xticks(rotation=45) # 旋转45度
  19. ax.plot(x, y, color="g")
复制代码

2.4. latex格式

Matplotlib的刻度还支持latex格式,可以显示一些特殊的字符,比如圆周率π
直接显示时:
  1. x = np.array([0, np.pi / 6, np.pi / 4, np.pi/3, np.pi / 2])
  2. x = np.round(x, 2)
  3. y = np.sin(x)
  4. fig = plt.figure()
  5. ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
  6. plt.xticks(labels=x, ticks=x)
  7. ax.plot(x, y)
复制代码

X轴的刻度显示实际的值。
调整为 latex 格式来显示:(调整 plt.xticks() 这个函数)
  1. plt.xticks(labels=[
  2.     "0", "$\pi/6$", "$\pi/4$", "$\pi/3$", "$\pi/2$"
  3. ], ticks=x)
复制代码

X轴的刻度中显示圆周率π,更易于阅读和理解。
3. 总结回顾

与之前介绍的画布子图坐标轴相比,刻度是设置最多也是最复杂的一个容器。
刻度的主要作用是帮助数据可视化更加清晰和易于理解,基于此,本篇主要介绍了:

  • 主次刻度
  • 刻度样式,包括是否显示刻度,刻度的密度,颜色,大小,角度以及latex公式的支持。

来源:https://www.cnblogs.com/wang_yb/p/17678841.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

x

举报 回复 使用道具