Python實(shí)現(xiàn)繪制3D條形圖的示例詳解
數(shù)據(jù)導(dǎo)入
盡管在matplotlib支持在一個坐標(biāo)系中繪制多組條形圖,效果如下

其中,藍(lán)色表示中國,橘色表示美國,綠色表示歐盟。從這個圖就可以非常直觀地看出,三者自2018到2022年的GDP變化情況。但相比之下,通過增加軸坐標(biāo),可以讓多組條形圖分布在三維坐標(biāo)中,從而更具表現(xiàn)力。
這里仍然以中美歐GDP為例,如下表所示,單位是萬億美元。
| 中國 | 美國 | 歐盟 | |
|---|---|---|---|
| 2018 | 13.89 | 20.53 | 15.98 |
| 2019 | 14.28 | 21.38 | 15.69 |
| 2020 | 14.69 | 21.06 | 15.37 |
| 2021 | 17.82 | 23.32 | 17.19 |
| 2022 | 17.96 | 25.46 | 16.64 |
首先,把這些數(shù)值寫入python
import numpy as np
years = np.arange(2018, 2023)
areas = ("PRC", "EU", "USA")
GDPS = {
'PRC': (13.89, 14.28, 14.69, 17.82, 17.96),
'USA': (20.53, 21.38, 21.06, 23.32, 25.46),
'EU': (15.98, 15.69, 15.37, 17.19, 16.64),
}三維條形圖
由于想在三維坐標(biāo)軸中繪圖,所以第一步是新建一個子坐標(biāo)圖,并指定projection=3d,然后在繪圖時(shí)給定一個額外的y坐標(biāo),代碼如下
import matplotlib.pyplot as plt
import numpy as np
ax = plt.subplot(projection='3d')
colors = ['r', 'b', 'g']
yticks = [2, 1, 0]
for i,key in enumerate(areas):
ax.bar(years, GDPS[key],
zs=i, zdir='y', label=key, color=colors[i], alpha=0.8)
plt.yticks([])
plt.legend()
plt.show()其中,設(shè)置透明度為0.8,這樣可以讓圖像在表現(xiàn)時(shí)更有層次感。通過設(shè)置label,對三個地區(qū)的顏色進(jìn)行了標(biāo)注,效果為

bar3d
上圖雖然有了3D坐標(biāo)軸,但其實(shí)每個數(shù)據(jù)條仍然是二維的,通過bar3d函數(shù),可以繪制更加結(jié)實(shí)緊固的三維方塊圖,其繪圖參數(shù)如下
bar3d(x, y, z, dx, dy, dz, color=None, zsort='average', shade=True, lightsource=None, *args, data=None, **kwargs)
其中,x,y,z是方塊圖的錨點(diǎn)坐標(biāo),dx, dy, dz是方塊的長度、寬度和高度。換言之,其繪圖邏輯是,先指定其繪圖的起始位置,然后按照給定的長寬高繪制長方體。下面的代碼就通過bar3d來繪制中美歐的GDP變化
ax = plt.subplot(projection='3d')
dx = dy = np.zeros(5)+0.5
x = years
z = np.zeros_like(x)
for i,key in enumerate(areas):
y = z + i
dz = GDPS[key]
ax.bar3d(x,y,z,dx,dy,dz,
color=colors[i], alpha=0.8, label=key)
???????plt.yticks([0.5, 1.5, 2.5], areas)
plt.show()這里對y軸坐標(biāo)重新進(jìn)行了映射,從而無需使用label也能清晰地看出每組數(shù)據(jù)所對應(yīng)的地區(qū),效果如下

bar3d函數(shù)中其他參數(shù)含義如下:
- zsort z軸排序方案
- shade 當(dāng)為
True時(shí),會顯示3D圖的陰影效果 - lightsource 3D條形圖的光源
到此這篇關(guān)于Python實(shí)現(xiàn)繪制3D條形圖的示例詳解的文章就介紹到這了,更多相關(guān)Python繪制3D條形圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
分享一下Python數(shù)據(jù)分析常用的8款工具
Python是數(shù)據(jù)處理常用工具,可以處理數(shù)量級從幾K至幾T不等的數(shù)據(jù),具有較高的開發(fā)效率和可維護(hù)性,還具有較強(qiáng)的通用性和跨平臺性,這里就為大家分享幾個不錯的數(shù)據(jù)分析工具,需要的朋友可以參考下2018-04-04
在Python中執(zhí)行和調(diào)用JavaScript的多種方法小結(jié)
JavaScript(JS)是一種常用的腳本語言,通常用于網(wǎng)頁開發(fā),但有時(shí)也需要在Python中執(zhí)行或調(diào)用JavaScript代碼,本文將詳細(xì)介紹Python中執(zhí)行和調(diào)用JavaScript的多種方法,每種方法都將附有示例代碼,方便理解如何在Python中與JavaScript進(jìn)行互動,需要的朋友可以參考下2023-11-11
Python簡單實(shí)現(xiàn)詞云圖代碼及步驟解析
這篇文章主要介紹了Python簡單實(shí)現(xiàn)詞云圖代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06

