如何在 Jupyter 笔记本中显示欧洲地图?

Posted

技术标签:

【中文标题】如何在 Jupyter 笔记本中显示欧洲地图?【英文标题】:How can a map of Europe be displayed in a Jupyter notebook? 【发布时间】:2017-05-09 13:39:27 【问题描述】:

我有一个简单的 pandas 数据框,其中包含一个欧洲国家名称列表以及每个国家/地区的分值。我想在 Jupyter 笔记本中显示欧洲地图,每个国家都根据该分数着色。我希望这张地图是一个简单的渲染图像(不依赖于谷歌地图之类的东西)。这怎么可能?

import pandas as pd

df = pd.DataFrame(
         [
             ["Norway"     , 7.537],
             ["Denmark"    , 7.522],
             ["Switzerland", 7.494],
             ["Finland"    , 7.469],
             ["Netherlands", 7.377],
         ],
         columns = [
             "country",
             "score"
         ]
    )

我已经搜索了执行此操作的工具,但要找到强大的工具比我预期的要难。我找到的最近的是Vincent,但现在似乎不受支持。它可以以如下方式使用:

import vincent
vincent.core.initialize_notebook()

geographic_data = [
                      "name":    "states",
                      "url":     "https://raw.githubusercontent.com/wrobstory/vincent_map_data/master/us_states.topo.json",
                      "feature": "us_states.geo"
                  ]

vis = vincent.Map(
          geo_data   = geographic_data,
          scale      = 1000,
          projection = "albersUsa"
      )

vis.display()

什么是这样做的好方法?

【问题讨论】:

【参考方案1】:

您可以通过cartopy 获取补丁信息,如this example,然后使用示例中的matplotlib 或bokeh 绘制它们

【讨论】:

【参考方案2】:

可以试试这个:

import matplotlib.pyplot as plt
import cartopy
import cartopy.io.shapereader as shpreader
import cartopy.crs as ccrs

plt.figure(figsize=(26, 30))
ax = plt.axes(projection=ccrs.EuroPP())
ax.add_feature(cartopy.feature.BORDERS, linestyle='-', alpha=.5)
ax.coastlines(resolution='50m')
ax.add_feature(cartopy.feature.OCEAN,facecolor=(0.2,0.2,0.2))
ax.gridlines()

【讨论】:

以上是关于如何在 Jupyter 笔记本中显示欧洲地图?的主要内容,如果未能解决你的问题,请参考以下文章

我在主页上有很多Jupyter笔记本,当Jupyter启动时会显示。我该如何清洁其中一些?

如何在jupyter笔记本中将python字符串显示为HTML

如何在 Google Colab 的笔记本中显示图像(如在 Anacondan Jupyter Notebook 中)?

如何显示我的 Jupyter 笔记本版本并在 Jupyter 笔记本中运行单元格?我收到一个错误:错误的解释器

如何在同一个 jupyter 笔记本单元格中显示多个熊猫系列直方图?

如何使用pyspark在jupyter笔记本中显示我的csv数据文件