用pyplot在不等轴上绘制圆
问题内容:
我想在自动缩放的pyplot生成的图形上绘制一个圆。当我跑步时
ax.get_aspect()
希望得到一个可以操纵椭圆轴的值,pyplot返回:
auto
这没什么用。您建议用什么方法在不等轴的pyplot图上绘制圆?
问题答案:
它确实确实取决于您想要什么。
当纵横比为自动时,在数据坐标中定义圆的问题是您将能够调整图形(或其窗口)的大小,并且数据比例会很好地拉伸。不幸的是,这也意味着您的圆不再是圆,而是椭圆。
有几种解决方法。首先,最简单地说,您可以固定长宽比,然后在数据坐标上的圆上画一个圆:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = plt.axes()
ax.set_aspect(1)
theta = np.linspace(-np.pi, np.pi, 200)
plt.plot(np.sin(theta), np.cos(theta))
plt.show()
这样,您将可以照常缩放和平移,但是形状始终是一个圆形。
如果您只想在图形上放置一个独立于数据坐标的圆,这样轴的平移和缩放不会影响圆上的位置和缩放,那么您可以执行以下操作:
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = plt.axes()
patch = mpatches.Circle((325, 245), 180, alpha=0.5, transform=None)
fig.artists.append(patch)
plt.show()
这是相当先进的mpl,但即使这样,我也认为它可读性强。
HTH,