首页 > 解决方案 > 根据邮政编码在真实地图上显示数据

问题描述

我尝试在真实地图上显示数据(数据应在加拿大安大略省内):我有 .csv 文件,其中包含 A 和 B 两列,A 是邮政编码,B 是其关联值(整数,1 到 5) ,我想找到 A 映射到的区域并根据关联的值对其进行着色。例如。邮政编码 P0G、P0A(加拿大邮政编码的前 3 位数字,代表一个区域),关联值为 2 和 5,我想在真实的这两个区域上显示不同的颜色(可能 2 为绿色,5 为红色)地图。

我不知道如何 tbh,也许使用 Python 或一些网站服务或一些 API?我以前没有在真实地图上可视化数据的经验。

我上面描述的问题是一个简化版本。实际问题有更多列(域),每行一个邮政编码,我需要|domains|为每个域生成多个图形/地图。但我想一旦我知道如何做一个领域,那么我应该能够做所有事情。

我尝试使用像 SimplyAnalytics 这样的在线分析工具,但没有弄清楚如何同时显示许多不同颜色的区域。我试图搜索类似的问题,但似乎由于最终目标和数据格式不同,因此代码/方法的更改可能会有很大差异。

谢谢!!!

一些示例数据将是: 在此处输入图像描述

标签: pythonplotmapsdata-visualization

解决方案


如果你想用 python 来做,你可以使用 geopandas 库。下面是一个示例代码(Github Gist)。首先,我们需要获取定义每个邮政编码区域(转发分类区域)(链接)的 shapefile。然后过滤安大略省的邮政编码并将其与您要绘制的数据连接起来。

import geopandas
import pandas as pd
import pandas_bokeh
import matplotlib.pyplot as plt
pandas_bokeh.output_notebook()

canada = geopandas.read_file("./gfsa000b11a_e.shp")
ontario = canada[canada['PRUID'] == '35']

# Sample data to plot
df=pd.DataFrame({'PCODE': ['P0V','P0L','P0T','P0Y', 'P0G', 'P2N'], 'A':[6,3,5,2,2,4] })

# Join ontario dataset with sample data
new_df=ontario.join(df.set_index('PCODE'), on='CFSAUID')


new_df.plot_bokeh(simplify_shapes=20000,
                  category="A", 
                  colormap="Spectral", 
                  hovertool_columns=["CFSAUID","A"])

在此处输入图像描述


推荐阅读