python - mpl_toolkits basemap 散点图错误

标签 python matplotlib gis matplotlib-basemap

我使用 mpl_toolkits.basemap.Basemap() 函数成功绘制了一个多边形。之后,我尝试将一些 (x,y) 点作为散点图添加到 basemap 上。它给出了一个 Deprecationwarning 消息,并且不绘制散点(即使仍然绘制了早期的 shapefile)。以下是代码块(请理解已经加载了必要的库):

fname = "../DATA/GIS/IL_State_ln"
m = Basemap(llcrnrlon=-92.,llcrnrlat=36.8,urcrnrlon=-86.5,urcrnrlat=43.,
             resolution='i', projection='tmerc', lat_0 = 36.5, lon_0 = -91.8)
m.readshapefile(fname, 'mygeom')

x = [-90., -91.2, -88.]
y = [38., 37.7, 42.]
m.plot(x,y)

plt.show()

弃用警告消息是:

/home/serenewiz/miniconda3/envs/onering/lib/python3.5/site-packages/mpl_toolkits/basemap/__init__.py:3260: MatplotlibDeprecationWarning: The ishold function was deprecated in version 2.0.
  b = ax.ishold()
/home/serenewiz/miniconda3/envs/onering/lib/python3.5/site-packages/mpl_toolkits/basemap/__init__.py:3269: MatplotlibDeprecationWarning: axes.hold is deprecated.
    See the API Changes document (http://matplotlib.org/api/api_changes.html)
    for more details.
  ax.hold(b)

仅供引用,版本为:Python(3.5)、matplotlib (2.0.0) 和 basemap(1.0.7)。

我在发帖之前引用了下面的链接,但还是没能解决问题: https://github.com/matplotlib/matplotlib/issues/7808

最佳答案

这里有两个问题:

  1. 有贬值预警
  2. 积分不会显示。

这两个问题完全不相关。

1。贬值预警

折旧警告不是错误。它只是告诉我们一些命令或函数不应该被使用(不再)。在这种情况下,折旧的命令是 basemap 在内部使用的来自 matplotlib 的命令。所以它实际上不在我们的控制之下,而是驻留在 basemap 代码中。从 matplotlib 版本 2.x 开始,此命令 (ax.hold) 已被弃用。 所以我们对此无能为力,直到有一个新版本的 basemap 出来,它不会再使用它了。从 this issue 可以看出至少似乎有人在处理它。
但这不是错误,目前唯一的缺点是烦人的警告消息。 basemap 的功能丝毫没有变差。

2。在图上显示点

要在 basemap 上绘制点,需要使用 Basemap 实例转换坐标。 IE。在 basemap m = Basemap(...) 上绘制点 lon = 80, lat=34,它们需要使用x,y = m([lon],[lat]) 在用 m.plot(x,y, marker="o") 绘制之前。请注意,为了绘制点,您需要为 plot 提供 marker 参数。

这是一个完整的例子。

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

m = Basemap(llcrnrlon=-92.,llcrnrlat=36.8,urcrnrlon=-86.5,urcrnrlat=43.,
             resolution='i', projection='tmerc', lat_0 = 36.5, lon_0 = -91.8)

m.drawcoastlines()
m.drawcounties(zorder=0, color='gray')

x,y = m([-90., -91.2, -88.],[38., 37.7, 42.])

m.plot(x,y, marker="o")

plt.show()

enter image description here

关于python - mpl_toolkits basemap 散点图错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42618383/

相关文章:

geolocation - 是否有将 Thomas Bros map 页面和网格转换为纬度/经度的公式?

python - QQuickView 仅支持加载从 QQuickItem 派生的根对象错误?

python - 为什么你可以在 Pandas 中做 df.loc(False) ['value' ]?

python - 未绘制直方图

python - cmap 和颜色列表之间的区别

python - Pandas for 循环

python - 获取重叠纬度经度域的包络线(或边界)

python - 添加到 numpy 字符串数组

python - 为什么我的 Python 散点图不起作用?

Mysql函数MBRContains不准确