python - 如何在 Jupyter notebook 中显示欧洲 map ?

标签 python pandas dataframe geography vincent

我有一个简单的 pandas DataFrame,其中包含欧洲国家/地区名称列表以及每个国家/地区的得分值。我想在 Jupyter notebook 中显示欧洲 map ,每个国家/地区都根据该分数着色。我希望这张 map 是一个简单的渲染图像(不依赖于谷歌地图)。这是怎么做到的?

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()

执行此操作的好方法是什么?

最佳答案

可以试试这个:

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()

关于python - 如何在 Jupyter notebook 中显示欧洲 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43871443/

相关文章:

Pandas DataFrames 在 Spyder 4 中与新的对象资源管理器一起显示

Python-eve GET 响应不包含资源内容(除非我指定它的模式)

python - 拼写错误 - Pyenchant

python - 将一个字符串与另一个字符串的多个子字符串进行比较

python - 使用 setup.py 从 git at tag 安装 python 包

python Pandas : replace groupby operation

python - 如何替换 Pandas 数据框中字符串中的子字符串

python - 矢量化/加速 for 循环

python - for循环中的递增计数器

Python Pandas dataframe : For each month of the year, 如果月份不存在,则将月份最后一天的日期添加到索引中,或者删除重复项