ben*_*kay 10 python matplotlib
我想在自动缩放的pyplot生成的图形上绘制一个圆圈.我跑的时候
ax.get_aspect()
Run Code Online (Sandbox Code Playgroud)
希望得到一个可以操纵椭圆轴的值,pyplot返回:
auto
Run Code Online (Sandbox Code Playgroud)
这不太有用.您会建议在不等轴的情节图上绘制圆形图?
use*_*430 16
这个问题已经超过一年了,但我也有这个问题.我需要在matplotlib图中添加圆圈,我希望能够使用数据坐标在图中指定圆的位置,并且我不希望圆半径随着平移/缩放而变化(或者更糟糕的是圆变为椭圆).
我发现的最好和最简单的解决方案是用一个点绘制一条曲线并包含一个圆形标记:
ax.plot(center_x,center_y,'bo',fillstyle='none',markersize=5)
Run Code Online (Sandbox Code Playgroud)
这给了一个漂亮的,固定大小的蓝色圆圈,没有填充!
这真的取决于你想要它做什么。
当纵横比为自动时,在数据坐标中定义圆的问题在于,您将能够调整图形(或其窗口)的大小,并且数据比例会很好地拉伸。不幸的是,这也意味着你的圆不再是一个圆,而是一个椭圆。
有几种方法可以解决这个问题。首先,最简单的是,您可以固定纵横比,然后在数据坐标图上放置一个圆圈:
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()
Run Code Online (Sandbox Code Playgroud)

有了这个,您将能够像往常一样缩放和平移,但形状将始终是圆形。
如果您只想在图形上放置一个圆,而与数据坐标无关,这样轴的平移和缩放不会影响圆的位置和缩放,那么您可以执行以下操作:
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()
Run Code Online (Sandbox Code Playgroud)

这是相当高级的 mpl,但即便如此,我认为它还是相当可读的。
哈,
| 归档时间: |
|
| 查看次数: |
6267 次 |
| 最近记录: |