假设我想在 matplotlib 中绘制一个椭圆:
import numpy as np
import matplotlib.pyplot as plt
x = np.sin(np.linspace(0,2*np.pi,100))
y = 2*np.cos(np.linspace(0,2*np.pi,100))
ax = plt.subplot(111)
ax.plot(x,y)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我可以通过添加五行代码得到我想要的结果:
import numpy as np
import matplotlib.pyplot as plt
x = np.sin(np.linspace(0,2*np.pi,100))
y = 2*np.cos(np.linspace(0,2*np.pi,100))
ax = plt.subplot(111)
ax.plot(x,y)
#make the axes square and equal
ax.set_aspect('equal')
minimum = np.min((ax.get_xlim(),ax.get_ylim()))
maximum = np.max((ax.get_xlim(),ax.get_ylim()))
ax.set_xlim(minimum*1.2,maximum*1.2)
ax.set_ylim(minimum*1.2,maximum*1.2)
plt.show()
Run Code Online (Sandbox Code Playgroud)
但这看起来很笨拙。matplotlib 中是否内置了一个函数来自动给出预期的行为?
小智 5
谷歌很快就提出了这个: http: //matplotlib.org/examples/pylab_examples/equal_aspect_ratio.html。不过我自己还没有测试过。
ax.set_aspect('equal', 'datalim')
ax.margins(0.1)
Run Code Online (Sandbox Code Playgroud)