龙空技术网

利用python绘制三维数据地图(改进)

白颊黑燕宝宝 166

前言:

目前兄弟们对“如何利用python画出数据分布图”可能比较看重,你们都需要知道一些“如何利用python画出数据分布图”的相关内容。那么小编也在网摘上网罗了一些有关“如何利用python画出数据分布图””的相关文章,希望朋友们能喜欢,兄弟们快快来了解一下吧!

利用python绘制三维数据地图(改进)

一、利用geojson绘制分层填色分布地图

上一篇文章介绍了利用geojson绘制地图,下面介绍用geojson绘制分层填色地图。首先,从百度疫情实时大数据报告网站下载疫情数据(网址为:),从网站下载geojson中国地图数据。

导入地图数据。

import geojson as json

json_data=json.load(open("d:/中华人民共和国.json",encoding='utf-8'))

boundary_data=json.load(open("d:/中华人民共和国1.json",encoding='utf-8'))

读入疫情数据。

import pandas as pd

data=pd.read_csv("d:/name.csv",encoding="gb18030")

下面绘制分层填色分布地图。

import matplotlib.pyplot as plt

from matplotlib.collections import PolyCollection

norm = plt.Normalize(data["死亡"].min(), data["死亡"].max())

map_vir = plt.cm.get_cmap(name='plasma')

fig=plt.figure(figsize=(8,10))

ax=fig.add_subplot()

ax.set_xlim(70,140)

ax.set_ylim(0,57)

poly=json_data['features']

for i in range(0,len(poly)):

try:

po=poly[i]['geometry']["coordinates"]

norm_values = norm(data["死亡"][i])

color = map_vir(norm_values)

lc = PolyCollection(po[0], edgecolor='grey', facecolor=color, closed=False)

ax.add_collection(lc)

except(ValueError):

po=poly[i]['geometry']["coordinates"]

norm_values = norm(data["死亡"][i])

color = map_vir(norm_values)

lc = PolyCollection(po, edgecolor='grey', facecolor=color, closed=False)

ax.add_collection(lc)

except:

pass

#绘制地图边界

boundary_poly= boundary_data [4]['geometry']["coordinates"]

boundary_lc = PolyCollection(boundary_poly, edgecolor='red',facecolor='none', closed=False)

ax.add_collection(boundary_lc)

#绘制图例

sm = plt.cm.ScalarMappable(norm=norm,cmap=map_vir)

fig.colorbar(sm,norm=norm,ax=ax)

#显示地图

plt.show()

新冠疫情死亡人数分布地图

二、绘制三维数据地图

我们用分层填色地图表示新冠导致死亡的人数,三维柱状图表示新冠确诊人数。绘制的代码和效果如下。

fig=plt.figure(figsize=(8,10))

ax=fig.add_subplot(projection='3d')

ax.set_xlim(70,140)

ax.set_ylim(0,57)

poly=json_data['features']

for i in range(0,len(poly)):

try:

po=poly[i]['geometry']["coordinates"]

norm_values = norm(data["死亡"][i])

color = map_vir(norm_values)

lc = PolyCollection(po[0], edgecolor='grey', facecolor=color, closed=False)

ax. add_collection3d(lc)

except(ValueError):

po=poly[i]['geometry']["coordinates"]

norm_values = norm(data["死亡"][i])

color = map_vir(norm_values)

lc = PolyCollection(po, edgecolor='grey', facecolor=color, closed=False)

ax. add_collection3d(lc)

except:

pass

绘制三维BAR图

for i in range(0,len(data["累计"])):

ax.bar3d(gdata.representative_point().x[i],gdata.representative_point().y[i],0,0.5,0.5, data["累计"][i],color= "red")

#plt.axis('off')

#显示数据地图

plt.show()

标签: #如何利用python画出数据分布图