matplotlib是python中的一个画图插件;
matplotlib的介绍网址,参见百度百科:
https://baike.baidu.com/item/Matplotlib/20436231?fr=aladdin
matplotlib支持二维图的效果,也支持三维图的效果,在大数据的制作中,可以以地图为底,在旁边加上柱状图的效果,达到一个三维立体的效果,python现成的库有很多,这在开发中就比较方便,可以直接import进来使用。
下边是根据matplotlib的帮助手册中的一个例子,在文章的最后,有英文的文档链接。
具体的实现代码如下:
#coding=utf-8
#引用相应的画图类库
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.basemap import Basemap
from matplotlib.collections import PolyCollection
import numpy as np
#初始化一个基础地图和三维的坐标轴
map = Basemap()
fig = plt.figure()
ax = Axes3D(fig)
#设置三维的朝向角度,高度和距离
ax.azim = 270
ax.elev = 50
ax.dist = 8
#在底面上画地图的海岸线和国界线
ax.add_collection3d(map.drawcoastlines(linewidth=0.25))
ax.add_collection3d(map.drawcountries(linewidth=0.35))
#将地图上的面转换成三维坐标轴上的图画
polys = []
for polygon in map.landpolygons:
polys.append(polygon.get_coords())
lc = PolyCollection(polys, edgecolor='black',
facecolor='#123456', closed=False)
ax.add_collection3d(lc)
#模拟地图上的柱状图数据,坐标按照经纬度
lons = np.array([-13.7, -10.8, -13.2, -96.8, -7.99, 7.5, -17.3, -3.7])
lats = np.array([9.6, 6.3, 8.5, 32.7, 12.5, 8.9, 14.7, 40.39])
cases = np.array([1971, 7069, 6073, 4, 6, 20, 1, 1])
deaths = np.array([1192, 2964, 1250, 1, 5, 8, 0, 0])
places = np.array(['Guinea', 'Liberia', 'Sierra Leone','United States', 'Mali', 'Nigeria', 'Senegal', 'Spain'])
x, y = map(lons, lats)
#添加柱状图的效果
ax.bar3d(x, y, np.zeros(len(x)), 2, 2, deaths, color= 'r', alpha=0.75)
plt.show()