溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

matplotlib如何實現(xiàn)Basemap的3d效果

發(fā)布時間:2021-12-02 17:57:58 來源:億速云 閱讀:399 作者:小新 欄目:大數(shù)據(jù)

小編給大家分享一下matplotlib如何實現(xiàn)Basemap的3d效果,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

matplotlib是python中的一個畫圖插件;

matplotlib支持二維圖的效果,也支持三維圖的效果,在大數(shù)據(jù)的制作中,可以以地圖為底,在旁邊加上柱狀圖的效果,達到一個三維立體的效果,python現(xiàn)成的庫有很多,這在開發(fā)中就比較方便,可以直接import進來使用。

具體的實現(xiàn)代碼如下:

#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
#初始化一個基礎(chǔ)地圖和三維的坐標軸
map = Basemap()
fig = plt.figure()
ax = Axes3D(fig)
#設(shè)置三維的朝向角度,高度和距離
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))

#將地圖上的面轉(zhuǎn)換成三維坐標軸上的圖畫
polys = []
for polygon in map.landpolygons:
   polys.append(polygon.get_coords())
lc = PolyCollection(polys, edgecolor='black',
                   facecolor='#123456', closed=False)
ax.add_collection3d(lc)
#模擬地圖上的柱狀圖數(shù)據(jù),坐標按照經(jīng)緯度
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如何實現(xiàn)Basemap的3d效果

以上是“matplotlib如何實現(xiàn)Basemap的3d效果”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI