【1】引言
在前序学习进程中,我们通过ax.set_box_aspect()函数掌握了坐标轴等比例设置方法。
担当我在回顾以前的学习文章时,发现ax.axis()函数也可以设置坐标轴比例,比如下述文章,文章可通过点击链接直达:
python画图|我的曲线长毛毛了(TickedStroke patheffect)-CSDN博客
这里面通过下方代码实现了坐标轴等比例设置:
ax.axis('equal') #约定X轴和Y轴的范围一致
为此我继续开展学习,并将学习成果和大家共享。
【2】官网教程
首先在matplotlib官网进行检索,搜索到相关页面如下:
https://matplotlib.org/stable/api/axis_api.html#module-matplotlib.axis
对此我尝试挑选了一下可能相关的内容units,毕竟如果单位一致,变化比例应该一致:
图1
找到units模块,其实没有特殊的说明,就是简单的对坐标轴单位进行设置:
图2
对于这种情况,最佳方案就是直接测试程序。
【3】程序测试
【3.1】ax.axis('equal')代码测试
输入以下代码,发现输出标准圆形:
import matplotlib.pyplot as plt #引入画图模块
import numpy as np #引入计算模块
from numpy.ma.core import equalfig,ax=plt.subplots() #定义画图t=np.linspace(0,6.28,500) #定义自变量参数
r=1 #定义常量
x=r*np.cos(t) #定义第一个因变量参数
y=r*np.sin(t) #定义第二个因变量参数ax.axis('equal')
#ax.set_box_aspect('2')
#ax.fill(x,y)
ax.plot(x,y) #绘制参数化图形
ax.set_title('Draw a circle-aixmls')
plt.show() #输出图形
图3
【3.2】ax.units()代码测试
顺着units帮助教程的指引,我们会找到示例页面:
matplotlib.axis.Axis.set_units — Matplotlib 3.9.2 documentation
在这里我们发现示例只是设置了X轴和Y轴的单位,为此跟随输入下方代码:
ax.xaxis.set_units(cm) ax.yaxis.set_units(cm)
运行程序发现报错,因为要安装 basic_units模块才可以。
对此,尝试安装basic_units模块未成功,因此暂不谈论。
【3.3】ax.set_box_aspect( )代码测试
在前序测试的基础上,我们回到ax.set_box_aspect( )函数。
首先在函数括号中输入1(具体代码:ax.set_box_aspect( 1‘’),其余类似),得到标准的圆形。
然后在函数括号中输入2,得到下图:
图4
由图4可见,X轴的比例是Y轴的两倍。
然后在函数括号中输入0.5,得到下图:
图5
由图4可见,Y轴的比例是X轴的两倍。
【4】代码干扰测试
根据前述测试结果,ax.axis( )和ax.set_box_aspect( )都可以实现标准圆输出。
为测试稳定性,将这两个函数同时使用:
ax.axis('equal') ax.set_box_aspect('1')
运行代码后的输出结果与图3一致。
之后修改下面行代码为:ax.set_box_aspect('2')
运行后的输出图像为图4。
也就是:坐标轴比例可能会以后一个为准,但这种比例只是坐标轴输出的范围,而不是坐标轴本身在相同长度上所代表的数值范围。
然后尝试交换两个函数的位置:
ax.set_box_aspect('2') ax.axis('equal')
此时的输出依然与图4一致。
然后修改下面行代码为:ax.axis('auto')
此时的输出图像为图6:
图6
对比图像可知:
ax.set_box_aspect()函数控制坐标轴输出的范围的比例,而不是坐标轴本身在相同长度上所代表的数值大小的比例。
ax.axis()函数控制坐标轴本身在相同长度上所代表的数值大小的比例。
【5】总结
辨析了控制坐标轴比例的函数功能。