ax1.set_xlim(0,5) ax1.set_ylim(-1,2) ax1.set_xticks(x)什么意思
时间: 2024-03-31 14:38:16 浏览: 93
这段代码是针对 Matplotlib 绘图库中的一个坐标系对象进行设置。
ax1.set_xlim(0,5) 表示设置该坐标系对象的 X 轴范围为 0 到 5,即 X 轴的取值范围为 [0, 5]。
ax1.set_ylim(-1,2) 表示设置该坐标系对象的 Y 轴范围为 -1 到 2,即 Y 轴的取值范围为 [-1, 2]。
ax1.set_xticks(x) 表示设置该坐标系对象的 X 轴刻度线的位置为列表 x 中的元素,即在 X 轴上绘制 x 列表中的值所对应的刻度线。
相关问题
import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False %matplotlib inline fig=plt.figure() ax1=fig.add_subplot(121) t=np.arange(0.0,5,0.01) s=np.sin(2*np.pi*t) ax1.plot(t,s,lw=2) bbox=dict(boxstyle='round',fc='white') plt.annotate('local max',xy=(2.3,1),xytext=(3,1.5), arrowprops=dict(facecolor='black',edgecolor='red',headwidth=7,width=2),bbox=bbox) #arrowstyle箭头类型,arrowstyle="->",connectionstyle="arc3"指的是xy与xytext之间的连接类型 bbox_prop=dict(fc='white') ax1.set_ylabel('Y',fontsize=12) ax1.set_xlabel('X',fontsize=12) ax1.set_ylim(-2,2) ax1.text(1,1.2,'max',fontsize=18) ax1.text(1.2,-1.8,'$y=sin(2*np.pi*t)$',bbox=bbox,rotation=10,alpha=0.8) ax2=fig.add_subplot(122) x=np.linspace(0,10,200) y=np.sin(x) ax2.plot(x,y,linestyle='-.',color='purple') ax2.annotate(s='Here I am',xy=(4.8,np.sin(4.8)),xytext=(3.7,-0.2),weight='bold',color='k', arrowprops=dict(arrowstyle='-|>',connectionstyle='arc3',color='red'), bbox=dict(boxstyle='round,pad=0.5',fc='yellow', ec='k',lw=1 ,alpha=0.8)) ax2.set_ylim(-1.5,1.5) ax2.set_xlim(0,10) bbox=dict(boxstyle='round',ec='red',fc='white') ax2.text(6,-1.9,'$y=sin(x)$',bbox=dict(boxstyle='square',facecolor='white',ec='black')) ax2.grid(ls=":",color='gray',alpha=0.5) #设置水印(带方框的水印) ax2.text(4.5,1,'NWNU',fontsize=15,alpha=0.3,color='gray',bbox=dict(fc="white",boxstyle='round',edgecolor='gray',alpha=0.3)) plt.show()
这段代码使用 Matplotlib 库绘制了两个子图,其中第一个子图绘制了正弦函数的图像,并标注了局部最大值,第二个子图绘制了另一个正弦函数的图像,并添加了箭头标注和水印。
具体解释如下:
1. 导入库和设置中文显示
```
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
%matplotlib inline
```
这部分代码导入了 Matplotlib 库和 Numpy 库,并设置了中文显示。
2. 创建画布和子图
```
fig=plt.figure()
ax1=fig.add_subplot(121)
ax2=fig.add_subplot(122)
```
这部分代码创建了一个画布 `fig` 和两个子图 `ax1` 和 `ax2`。
3. 绘制第一个子图
```
t=np.arange(0.0,5,0.01)
s=np.sin(2*np.pi*t)
ax1.plot(t,s,lw=2)
ax1.set_ylabel('Y',fontsize=12)
ax1.set_xlabel('X',fontsize=12)
ax1.set_ylim(-2,2)
ax1.text(1,1.2,'max',fontsize=18)
ax1.text(1.2,-1.8,'$y=sin(2*np.pi*t)$',bbox=bbox,rotation=10,alpha=0.8)
bbox=dict(boxstyle='round',fc='white')
plt.annotate('local max',xy=(2.3,1),xytext=(3,1.5), arrowprops=dict(facecolor='black',edgecolor='red',headwidth=7,width=2),bbox=bbox)
```
这部分代码绘制了第一个子图,包括正弦函数的图像、局部最大值的标注、正弦函数公式的文本框等。
4. 绘制第二个子图
```
x=np.linspace(0,10,200)
y=np.sin(x)
ax2.plot(x,y,linestyle='-.',color='purple')
ax2.annotate(s='Here I am',xy=(4.8,np.sin(4.8)),xytext=(3.7,-0.2),weight='bold',color='k', arrowprops=dict(arrowstyle='-|>',connectionstyle='arc3',color='red'), bbox=dict(boxstyle='round,pad=0.5',fc='yellow', ec='k',lw=1 ,alpha=0.8))
ax2.set_ylim(-1.5,1.5)
ax2.set_xlim(0,10)
bbox=dict(boxstyle='round',ec='red',fc='white')
ax2.text(6,-1.9,'$y=sin(x)$',bbox=dict(boxstyle='square',facecolor='white',ec='black'))
ax2.grid(ls=":",color='gray',alpha=0.5)
ax2.text(4.5,1,'NWNU',fontsize=15,alpha=0.3,color='gray',bbox=dict(fc="white",boxstyle='round',edgecolor='gray',alpha=0.3))
```
这部分代码绘制了第二个子图,包括另一个正弦函数的图像、箭头标注、水印等。
5. 显示图像
```
plt.show()
```
这部分代码显示了绘制的图像。
UserWarning: FixedFormatter should only be used together with FixedLocator ax1.set_xticklabels(months)
这个警告是由于使用了 `ax1.set_xticklabels(months)` 来设置x轴标签,但是并没有指定标签的位置,因此 matplotlib 会自动根据数据范围和可视化区域来计算标签的位置,从而导致警告。为了避免这个警告,可以使用 `ax1.set_xticks()` 来指定标签的位置,代码如下:
```python
import matplotlib.pyplot as plt
import calendar
# 数据
months = [calendar.month_name[i] for i in range(1, 13)]
price_a = [1000, 1000, 1000, 1000, 1000, 1400, 1400, 1200, 1800, 1800, 1800, 1800]
price_b = [1600, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1000, 1000, 1000, 1000]
# 2023年子图
fig, ax1 = plt.subplots(figsize=(8, 5))
ax1.set_ylim(800, 2000)
ax1.set_ylabel('价格')
ax1.set_xticks(range(1, 13))
ax1.set_xticklabels(months)
ax1.set_title('2023年价格阶梯图')
ax1.plot(price_a, 'b', drawstyle='steps-post')
ax1.annotate('价格上涨', xy=(5, 1400), xytext=(7, 1600),
arrowprops=dict(facecolor='red', arrowstyle='->'))
# 2022年子图
ax2 = ax1.twiny()
ax2.set_xlim(ax1.get_xlim())
ax2.set_xticks(range(1, 13))
ax2.set_xticklabels(months)
ax2.plot(price_b, 'b', drawstyle='steps-post')
ax2.annotate('价格上涨', xy=(5, 1200), xytext=(7, 1400),
arrowprops=dict(facecolor='red', arrowstyle='->'))
plt.show()
```
输出结果与之前相同,但是不会出现警告。
阅读全文