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,然后在繪圖時給定一個額外的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è)置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
時,會顯示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ā),但有時也需要在Python中執(zhí)行或調(diào)用JavaScript代碼,本文將詳細(xì)介紹Python中執(zhí)行和調(diào)用JavaScript的多種方法,每種方法都將附有示例代碼,方便理解如何在Python中與JavaScript進(jìn)行互動,需要的朋友可以參考下2023-11-11Python簡單實(shí)現(xiàn)詞云圖代碼及步驟解析
這篇文章主要介紹了Python簡單實(shí)現(xiàn)詞云圖代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06