所以我对python很新,但我有使用matplotlib的经验和图表的公平份额,我正在尝试制作类似于此的地图:(其中阴影表示投票强度)但对于Egypt's governates。我有关于csv的数据,我知道如何在python中解析它,我只是想知道如何在地图上显示这些数据。
不幸的是,在线地图的质量非常低,所以我可以轻松地重新绘制Photoshop。我想知道如何根据使用python的数据为每个政府着色。
我的第一直觉是在png上绘制每个政府的图片,然后根据数据为每个图像添加一个阴影,然后堆叠所有的政府图像。但这似乎很愚蠢。我显然需要对政府进行编号,这并不难,但我不知道如何以图形方式开始显示它们。
答案 0 :(得分:1)
如果您可以为管理者找到合适的shapefile,那么您可以使用cartopy,它与matplotlib接口。我刚刚从this page下载了第二个文件,以便在下面使用。我注意到这些区域与链接图像中的区域不同,但它至少说明了它的工作原理。
import cartopy
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
reader = cartopy.io.shapereader.Reader('egy_admbnda_adm1_capmas_20170421.shp')
cmap = plt.get_cmap('viridis')
ax = plt.subplot(111, projection=ccrs.PlateCarree())
ax.set_extent([24, 38, 20, 33])
for i, geom in enumerate(reader.geometries()):
ax.add_geometries([geom], ccrs.PlateCarree(), facecolor=cmap(i * 10))
plt.show()