python画图|被忽视的坐标轴比例ax.set_box_aspect()函数
【1】引言
自python画图这个系列开始写以来,每次都会输出不同图形。
其实越写越觉得值得钻研的东西太多,制约学习进度的往往是非常基础的知识。
今天在学习的时候,想到用参数化方程简单输出一个圆,发现竟然输出了椭圆,检查数学方程对应的代码无误后,猛然发现根本原因居然是X轴和Y轴的比例不同。
其实以前学习的进程中也曾看到设置X轴和Y轴为等比例坐标轴的代码,但从未在意,今天就一起好好学习一下,基础知识努力加深是肯定有益的。
【2】代码探索
我们尝试画一个圆形。
首先,引入画图和计算模块:
import matplotlib.pyplot as plt #引入画图模块 import numpy as np #引入计算模块
然后定义要画图:
fig,ax=plt.subplots() #定义画图
之后定义自变量和因变量参数方程:
t=np.linspace(0,6.28,500) #定义自变量参数 r=1 #定义常量 x=r*np.cos(t) #定义第一个因变量参数 y=r*np.sin(t) #定义第二个因变量参数
这里定义了一个常数r,目的是画一个半径为1的圆。
然后直接输出图形:
ax.plot(x,y) #绘制参数化图形 ax.set_title('Draw a circle-aixmls') plt.show() #输出图形
运行代码后的图形为:
图1
很显然,图1并未输出一个想象中的圆形,这个“圆”看上去是个“椭圆”。但仔细看坐标轴的值,这其实又是一个圆,圆心在(0,0),X轴和Y轴的范围都是[-1,1]。
追溯根本原因:X轴比Y轴长,坐标轴的比例不一样。
【3】代码修正
基于此必须修正,在官网我们找到如下教程:
Axes box aspect — Matplotlib 3.9.2 documentation
其实这里最核心的代码就是:
ax.set_box_aspect(1)
往程序里加入上述代码,运行后的图像为:
图2
可见图2绘制出了预期中的圆形。
【4】总给
掌握了使用ax.set_box_aspect()函数实现坐标轴等比例设置。