用大Pandas将结果绘制到实际地图上

2024-10-02 16:26:03 发布

您现在位置:Python中文网/ 问答频道 /正文

对于我的python知识水平来说,这可能是一项不可能完成的任务,但我在想,是否有一种方法(可能是已经存在的程序)将由AreaCodes列和testresults列组成的数据帧的结果映射到该区域的实际映射上。在

所以我的测向图是这样的:

           PostCode Area   Test Result
0                  BN           P
1                  PE           P
2                  SO         PRS
3                  PE           P
4                  PE           F
5                  CW           P
6                  CW           F
7                   S           P
8                   S           F
9                  SW           P
10                 SW           F
11                 CM           P
12                 CM           F

邮政编码区是英国的。我正在寻找一个类似英国热图的东西,那里的强度由“P”的计数控制


Tags: 数据方法test程序区域水平cmarea
1条回答
网友
1楼 · 发布于 2024-10-02 16:26:03

你可以用卡通片。在

pip install https://github.com/SciTools/cartopy/archive/v0.13.1.tar.gz

您需要geos、shapely和proj4,这是使用水蟒最简单的方法:

^{pr2}$

我从这里下载了包含英国邮政区的形状文件: http://www.opendoorlogistics.com/downloads/

然后可以使用cartopy为区域着色,如下所示:

from cartopy import crs
from cartopy.io import shapereader

import matplotlib.pyplot as plt
from matplotlib.cm import get_cmap

cmap = get_cmap('viridis')

uk_postal_areas = shapereader.Reader('Areas.shp')

ax = plt.axes(projection=crs.Mercator())

values = {
    'BA': 0.5,
    'BN': 0.1,
    'NE': 1.0,
    'IV': 0.7,
    'BT': 0.3,
}

for record in uk_postal_areas.records():
    name = record.attributes['name']
    ax.add_geometries(
            [record.geometry],
            facecolor=cmap(values.get(name, 0)),
            linewidth=0,
            crs=crs.PlateCarree(),
    )

ax.set_extent([-10, 4, 48, 61], crs=crs.PlateCarree())

plt.show()

结果

result

相关问题 更多 >