首页 > 解决方案 > 在python中绘制圆时检测用于半径的测量距离

问题描述

我有一个 Python 代码,它创建了一个圆圈。但是我不确定绘制圆圈时使用的测量距离。有人可以建议如何检查。

尝试将半径更改为 5000 以查看圆的大小是否发生变化。没有反映任何变化。

import matplotlib.pyplot as plt 
from matplotlib.patches import Circle
from descartes import PolygonPatch

    BLUE = '#6699cc'
    fig = plt.figure() 
    ax = fig.gca() 
    ax.add_patch(Circle((-118.22191509999999, 34.0431494), 5, fill = False ))
    ax.axis('scaled')
    plt.show()

当使用 5000 作为半径时,预计圆会更大。不确定半径是以英里、米还是公里为单位。

标签: python-3.xmatplotlibchartsdescartes

解决方案


除非另有规定,transform=半径均以数据单位表示。因此,半径为 5000 的圆比半径为 5 的圆大 1000 倍。如果您不在轴上绘制任何其他内容,轴的范围将自动调整,因此圆的视觉方面不会有所不同。但是,如果您查看 x/y 刻度标签,您可以清楚地看到一个比另一个大。

import matplotlib.pyplot as plt 
from matplotlib.patches import Circle

fig, (ax1, ax2, ax3) = plt.subplots(1,3, figsize=(15,5))
ax1.add_patch(Circle((-118.22191509999999, 34.0431494), 5, fill=False))
ax2.add_patch(Circle((-118.22191509999999, 34.0431494), 5000, fill=False))
c1 = Circle((-118.22191509999999, 34.0431494), 5, fill=False, ec='b')
c2 = Circle((-118.22191509999999, 34.0431494), 10, fill=False, ec='r')
ax3.add_patch(c1)
ax3.add_patch(c2)
ax3.legend([c1,c2],['radius=5', 'radius=10'])
for ax in [ax1, ax2, ax3]:
    ax.axis('scaled')
ax2.set_title("Notice the different data range")
plt.show()

在此处输入图像描述


推荐阅读