python – Matplotlib圆形补丁没有光滑的边缘

我正在尝试使用Cartopy地理投影在地图上使用Circle函数显示Matplotlib补丁.显然,这应该是一个平滑的,接近无标度的圆形贴片,但边缘是非常多边形的.奇怪的是,圆形的多边形近似对应CirclePolygon产生了一个更平滑的圆,虽然仍然没有我想要的那么平滑.

这几乎是所有代码,因为它与添加绘图和补丁有关:

fig = plt.figure(figsize=(8,6))
img_extent = [340, 348, -35.5, -31]
ax = fig.add_subplot(1, 1, 1, projection = ccrs.Mollweide(), extent = img_extent)
patch_coords = [[342.5833, -34.5639],[343.4042, -34.3353],[343.8500, -33.8728],
                 [344.4917, -33.7636],[344.9250, -33.3108],[345.1333, -32.6811],
                   [344.9233, -32.1583]]
for pair in patch_coords:
    ax.add_patch(mpatches.Circle(xy = pair, radius = 0.5, 
                   color = 'r', alpha = 0.3, rasterized = None, 
                      transform = ccrs.Geodetic()))
ax.scatter(ra1, dec1, transform = ccrs.Geodetic(), rasterized = True, s = 1, 
             marker = ".", c = 'g', label = 'z < 0.025')
ax.scatter(ra2, dec2, transform = ccrs.Geodetic(), rasterized = True, s = 2, 
             marker = ".", c = 'b', label = '0.25 < z < 0.034')
ax.scatter(ra3, dec3, transform = ccrs.Geodetic(), rasterized = True, s = 0.75, 
             marker = ".", c = 'grey', label = '0.034 < z < 0.05')

产生这个

我试过查看可用的参数,但似乎没有解决它.它是否有这样的原因出现,是否有任何方法使它更顺畅?

解决方法:

我相信Cartopy以任意固定精度进行线投影,而不是动态线分割计算.

参见例如:

> https://github.com/SciTools/cartopy/issues/825
> https://github.com/SciTools/cartopy/issues/363

我还认为现在正在开展工作以解决这个问题.

在此期间,要解决特定问题,您可以破解CRS.threshold属性,
如下所述:https://github.com/SciTools/cartopy/issues/8
也就是说,您可以通过重新编程固定值来使用更精细的步骤.
我认为这也可以解决这个圆形绘图问题,虽然我不是100%

上一篇:python-用cartopy和pyresample投影卫星图像的差异


下一篇:在Python 3.6中计算polygon和shapefile之间的重叠