【问题标题】:When I use basemap in python, longitude is sometimes reversed, flipping the map当我在python中使用底图时,有时会颠倒经度,翻转地图
【发布时间】:2019-05-24 22:00:38
【问题描述】:

在 python 中,我使用底图 (https://matplotlib.org/basemap/) 来绘制空间数据,并且我已经使用了几年,没有出现任何大问题。我最近不得不重新安装 python3(通过 conda,以及一些模块),底图现在有一个奇怪的问题:在某些条件下,地图将显示为翻转经度,切换东西。例如,我使用以下代码:https://matplotlib.org/basemap/users/robin.html。如果我按原样使用该代码,则地图显示正常,但当我设置 lon_0=180 时,地图会翻转,如下图所示。

Image of map problem

将 lon_0 设置为任何正数都会产生翻转的地图,而 0 或负数会产生正确的地图。 lon_0 应该简单地设置绘制地图的中心经度,并且不应该有这种行为,所以我不确定发生了什么。有没有人以前见过这种行为,或者对如何解决它有建议?我可以改变我的代码来解决它,但我宁愿让事情正常工作。

我正在使用 python3.7.3。我尝试使用命令“conda install -c anaconda basemap”更新底图,但它告诉我底图已经是最新的了。

这里是代码。它与上面链接的代码相同,但 lon_0 设置为 180。

from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
# lon_0 is central longitude of projection.
# resolution = 'c' means use crude resolution coastlines.
m = Basemap(projection='robin',lon_0=180,resolution='c')
m.drawcoastlines()
m.fillcontinents(color='coral',lake_color='aqua')
# draw parallels and meridians.
m.drawparallels(np.arange(-90.,120.,30.))
m.drawmeridians(np.arange(0.,360.,60.))
m.drawmapboundary(fill_color='aqua')
plt.title("Robinson Projection")
plt.show()

当我运行代码时,唯一的输出是这个,看起来不相关:

map_test.py:36: MatplotlibDeprecationWarning: dedent 函数在 Matplotlib 3.1 中已弃用,并将在 3.3 中删除。请改用inspect.cleandoc。 m = 底图(projection='robin',lon_0=180,resolution='c')

有什么想法吗?

【问题讨论】:

    标签: python matplotlib maps matplotlib-basemap


    【解决方案1】:

    这应该可以解决问题。只需在创建轴后添加:

    # Matplotlib >= 3.1.0 (introduced "set_inverted")
    ax.xaxis.set_inverted(False)
    
    # Matplotlib < 3.1.0 (this is just the source code for "set_inverted")
    interval = ax.xaxis.get_view_interval()
    ax.set_xlim(sorted(interval), auto=None)
    

    经过反复试验,似乎选择中心经度而不是正经度也可以:

    m = Basemap('robin', lon_0=-180)
    

    【讨论】:

    • 太好了,这解决了问题。我没有尝试 =3​​.1.0 版本有效。我最初对“self”关键字感到困惑,但我只是将“self”替换为轴的变量名,即“ax”。谢谢!
    • 不!很抱歉造成混乱,刚刚清理了我的答案
    猜你喜欢
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 2022-08-05
    • 1970-01-01
    • 2018-07-20
    相关资源
    最近更新 更多