我想在由pyplot自动生成的图形上绘制一个圆。当我运行以下代码时
ax.get_aspect()
我希望得到一个值,用它可以操纵椭圆的轴,pyplot返回:
auto
这并不太有用。你会建议使用哪些方法在pyplot图上绘制一个轴不相等的圆?
我想在由pyplot自动生成的图形上绘制一个圆。当我运行以下代码时
ax.get_aspect()
我希望得到一个值,用它可以操纵椭圆的轴,pyplot返回:
auto
这并不太有用。你会建议使用哪些方法在pyplot图上绘制一个轴不相等的圆?
ax.plot(center_x,center_y,'bo',fillstyle='none',markersize=5)
这将给出一个漂亮的、固定大小的蓝色圆圈,没有填充!
这真的取决于你想要什么。
当纵横比例为自动时,在数据坐标中定义一个圆的问题在于您将能够调整图形(或其窗口),并且数据比例尺度会很好地拉伸。不幸的是,这也意味着您的圆不再是一个圆,而是一个椭圆。
有几种解决方法。首先,最简单的方法是固定您的纵横比,然后在数据坐标中在图表上放置一个圆:
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,但即使如此,我认为它还是相当易读的。
希望对您有所帮助,
在 @user3208430 的基础上,如果您希望圆圈始终出现在轴上的相同位置(无论数据范围如何),则可以使用轴坐标通过 transform 来定位:
ax.plot(.94, .94, 'ro', fillstyle='full', markersize=5, transform=ax.transAxes)
其中 x 和 y 均在 [0,1] 范围内。本示例将标记放置于坐标轴的右上角。