在使用Python的matplotlib绘图时,有时候会需要设置坐标轴,有几种方法可以提供支持。
以下简称matplotlib.pyplot为plt
| 函数 | 描述 |
|---|---|
| plt.axis([x_start, x_end, y_start, y_end]) | 设置当前x轴和y轴的范围 |
plt.xlim(x_start, x_end) | 设置当前x轴的范围 |
| plt.ylim(y_start, y_end) | 设置当前y轴的范围 |
| plt.xticks(array,‘a’,'b','c') | 设置当前x轴刻度位置的标签和值 |
| plt.yticks(array,'a','b','c') | 设置当前y轴刻度位置的标签和值 |
| plt.xlabel(s) | 设置当前x轴的标签 |
| plt.ylabel(s) | 设置当前y轴的标签 |
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
x = np.linspace(0, 6, 100)
y = np.cos(x)
plt.plot(x, y, 'r')
plt.show()
以上图余弦函数为例,x的定义域为[0,6],y的值域为[-1,1]
下面来详细说明每个函数的用法
1.plt.axis() 定义横坐标和纵坐标显示范围,效果展示如下
plt.axis([1, 5, -0.5, 0.5]) #x的显示范围定为1~5,y的显示范围定为-0.5~0.5
2.plt.xlim/plt.ylim() 定义横坐标(纵坐标)显示范围,效果展示如下
plt.xlim(1,5) #x的显示范围定为1~5
plt.ylim(-0.5,0.5) #y的显示范围定为-0.5~0.5
3.plt.xticks/plt.yticks 设置当前x轴(y轴)对应刻度的标签
#在x轴Π/3,2Π/3,Π,4Π/3,5Π/3对应刻度加上对应值的标签
plt.xticks([np.pi/3, 2*np.pi/3, 3*np.pi/3, 4*np.pi/3, 5*np.pi/3], ['$\pi/3$', '$2\pi/3$', '$\pi$', '$4\pi/3$', '$5\pi/3$'])
#在y轴-1,0,1刻度上加上自定义标签
plt.yticks([-1,0,1],['$min$','$zero$','$max$'])
plt.xticks([]) #不加参数则可以取消坐标轴所有标签
plt.yticks([])
matplotlib绘图默认不支持中文,如果需要对中文的支持请添加以下语句:
#字体可以自己设定,这里采用楷体
matplotlib.rcParams['font.family'] = 'KaiTi'
matplotlib.rcParams['font.sans-serif'] = ['KaiTi']4.当以上几个方法同时出现,显示范围会如何呢?来看下面代码:
plt.xlim(1,5) #x的范围是1~5
plt.axis([0, 4, -1, 0]) #x的范围是0-4,y的范围是-1~0
plt.ylim(-0.5,0.5) #y的范围是-0.5,0.5
可以发现,最后x的显示范围是0~4,y的显示范围是-0.5~0.5。
也就是说xlim()/ylim()和axis()可以相互覆盖,最后显示的坐标轴范围取决于两者执行的顺序。
那如果加上xticks()/yticks()呢?
plt.xlim(1,4) #x的范围是1-4
plt.xticks([1, 3, 5], ['$one$','$three$','$five$']) #x的标签刻度值是1,3, 5
plt.xticks([1, 3, 5], ['$one$','$three$','$five$']) #x的标签刻度值是1, 3, 5
plt.xlim(1,4) #x的范围是1-4
同样的,依旧是方法的互相覆盖,取决于真正执行的顺序。
5.函数实际x、y的范围和绘图中x、y显示的范围是不一样的概念
函数实际x、y的范围是根据x和y的定义域和值域决定的,而在绘图中x和y轴显示范围是通过plt提供的上述方法规定的。
plt.axis([0, 10, -2, 2]) #x显示范围是0~10,y轴显示范围是-2~2
根据咱们的定义,x的定义域是[0,6],值域是[-1,1]。
而咱们只是显式定义了坐标轴的显示范围,这是不同于函数的实际取值范围的。
总结:
- 需要同时设定x轴和y轴的显示范围,采用axis()
- 单独设定x轴或y轴的显示范围,用xlim()/ylim()
- 想在x轴或y轴上某一特定刻度添加标签,用xticks()或yticks()
- 给x轴或y轴添加标签,用xlabel()或ylabel()
- 以上几个方法同时调用时,坐标轴的实际显示范围取决于各函数的执行顺序
- 以上方法只改变了坐标轴的显示范围,并不影响函数
本文介绍了在Python的matplotlib.pyplot库中设置坐标轴显示范围的方法,包括plt.axis(), plt.xlim(), plt.ylim(), plt.xticks(), plt.yticks()等函数的用法。详细解释了这些函数如何相互影响以及如何定义坐标轴的显示范围,强调了显示范围与实际函数取值范围的区别。"
111439206,9620343,排序算法在招生录取问题中的应用,"['算法', '排序算法', 'Java', '数据结构']
507

被折叠的 条评论
为什么被折叠?



