【问题标题】:basemap round stereographic plot mapboundary cropped底图圆形立体图地图边界裁剪
【发布时间】:2018-07-18 06:25:59
【问题描述】:

我正在使用 matplotlib 底图工具包处理圆形立体图。 我总是在顶部、底部和左侧、右侧得到裁剪的地图边界。示例代码:

from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt

m = Basemap(projection='spstere', boundinglat=-60, lon_0=180,
lat_ts=-71, round=True, ellps='WGS84')

m.drawparallels(np.arange(-90.,-60.0, 10.), linewidth=0.1)
m.drawmeridians(np.arange(-180.,181.,45.), linewidth=0.1, latmax=90)
m.drawmapboundary(linewidth=2, color='k')

plt.savefig("test.png",dpi=600, transparent=True)
plt.show()

这会导致:

我用红色椭圆(顶部和左侧)标记了裁剪掉的部分。如果我更改“linewidth”参数并没有什么不同。

是否有解决此问题的解决方法以使边界线宽均匀? 提前感谢您的任何帮助和建议!

【问题讨论】:

    标签: matplotlib projection matplotlib-basemap


    【解决方案1】:

    定义地图边界的圆被实际使用的坐标轴剪裁。您可以使用clip_on 选项让它不被剪裁。

    circle = m.drawmapboundary(linewidth=2, color='k')
    circle.set_clip_on(False)
    

    示例代码如下所示

    from mpl_toolkits.basemap import Basemap
    import numpy as np
    import matplotlib.pyplot as plt
    
    m = Basemap(projection='spstere', boundinglat=-60, lon_0=180,
    lat_ts=-71, round=True, ellps='WGS84')
    
    m.drawparallels(np.arange(-90.,-60.0, 10.), linewidth=0.1)
    m.drawmeridians(np.arange(-180.,181.,45.), linewidth=0.1, latmax=90)
    circle = m.drawmapboundary(linewidth=2, color='k')
    circle.set_clip_on(False)
    
    plt.savefig("test.png",dpi=600, transparent=True)
    plt.show()
    

    【讨论】:

    • 非常感谢。这工作正常。但是有一个限制。如果drawmapboundary的线宽小于1,问题依旧。
    • 线宽小于 1 时所看到的情况有所不同。垂直线和水平线正好有 1 个像素粗,而圆的其余部分由于抗锯齿而显得更粗。
    猜你喜欢
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    相关资源
    最近更新 更多