我有这个简单的代码:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
from matplotlib.patches import Ellipse
PlotFileName="test.pdf"
pdf = PdfPages(PlotFileName)
fig=plt.figure(1)
ax1=fig.add_subplot(111)
plt.xlim([0,10])
plt.ylim([0,10])
ax1.plot([0,10],[0,10])
e=0.0
theta=0
maj_ax=2
min_ax=maj_ax*np.sqrt(1-e**2)
const=1
ax1.add_artist(Ellipse((5, 5), maj_ax, const*min_ax, angle=theta, facecolor="green", edgecolor="black",zorder=2, alpha=0.5))
plt.grid()
pdf.savefig(fig)
pdf.close()
plt.close()
这是它的外观:
正如您从代码中看到的那样,它应该是一个圆圈,但事实并非如此!我已将问题缩小到第const
16 行中的术语。我不想使用ax1.axis("equal")
,因为我的数据在垂直和水平上没有相同的比例。谁能告诉我如何让 matplotlib 告诉我它使用什么纵横比,这样我就可以const
正确设置这个术语,所以最后我有一个圆圈?
换句话说,我想知道水平轴与垂直轴“物理”长度的比率(例如,打印出来的内容)。
我真的很感激任何建议,在此先感谢