【问题标题】:Plotting data points onto matplotlib Basemap in Jupyter Notebook在 Jupyter Notebook 中将数据点绘制到 matplotlib 底图上
【发布时间】:2018-03-05 00:44:30
【问题描述】:

Link to full code

我能够在 Jupyter Notebook 中成功创建美国的底图,并在单元格 4 中包含 shapefile、着色和边框。

我正在尝试使用单元格 8 中的以下行在此底图上绘制许多数据点:

m.plot(x, y, marker='o', markersize=data, color='#444444', alpha=0.8, latlon=True)

数据被绘制出来,但我失去了底图的所有格式和形状。实际上,我希望单元格 8 覆盖在单元格 4 上。我怀疑我没有在同一平面上绘制这些形状。

此外, plt.show() 什么也没给我。我错过了什么?

【问题讨论】:

  • 您是否在 jupyter notebook 中使用导入语句运行“%matplotlib inline”?
  • 是的,我有。这些图表显示在我的 jupyter 笔记本中,但单独显示。
  • 所以,如果您将整个代码放在一个单元格中,我怀疑一切正常,对吧?!对于测试,最好有一个minimal reproducible example 可用。
  • @ImportanceOfBeingErnest 没错,我本可以把这个例子简化。这个答案(把它全部放在 1 个单元格中)和你下面的答案(将轴参数传递给底图)都是很好的解决方案。谢谢你。我想知道为什么 1 个细胞有效,但分裂细胞无效。内存?
  • 否,原因是在新单元格中绘图时没有当前图形,因此创建了一个新图形。您可以防止这种情况发生,如下面我的答案的新部分所述。

标签: python-2.7 matplotlib plot data-visualization matplotlib-basemap


【解决方案1】:

A.使用图形实例

这个想法可以是在创建底图时明确指定要绘制的轴。

单元格 1:

fig, ax = plt.subplots()
m = Basemap(... , ax=ax)

单元格 2:# do other stuff

单元格 3:

# plot to map:
m.plot(...)

单元格 4:

# state figure object to show figure (when inline backend is in use) 
fig


示例截图:

B.让 pyplot 不关闭数字

另一种选择是让 pyplot 不关闭数字。这是此答案的第二个选项:How to overlay plots from different cells?

%config InlineBackend.close_figures=False

【讨论】:

    猜你喜欢
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 2020-11-06
    • 1970-01-01
    • 2016-12-30
    相关资源
    最近更新 更多