新西兰服务器

matplotlib如何实现Basemap的3d效果


matplotlib如何实现Basemap的3d效果

发布时间:2021-12-02 17:57:58 来源:高防服务器网 阅读:66 作者:小新 栏目:大数据

小编给大家分享一下matplotlib如何实现Basemap的3d效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

matplotlib是python中的一个画图插件;

matplotlib支持二维图的效果,也支持三维图的效果,在大数据的制作中,可以以地图为底,在旁边加上柱状图的效果,达到一个三维立体的效果,python现成的库有很多,这在开发中就比较方便,可以直接import进来使用。

具体的实现代码如下:

#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()

以上是“matplotlib如何实现Basemap的3d效果”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注高防服务器网行业资讯频道!

[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[