python繪制分組條形圖的示例代碼
數(shù)據(jù)導(dǎo)入
我們經(jīng)常會(huì)遇到對(duì)比多個(gè)統(tǒng)計(jì)量隨時(shí)間變化的圖像,比如想知道中國(guó)、美國(guó)以及歐盟最近幾年GDP變化,如下表所示,單位是萬(wàn)億美元。
中國(guó) | 美國(guó) | 歐盟 | |
---|---|---|---|
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ù)值寫(xiě)入python
import numpy as np years = np.arange(2018, 2023) areas = ("PRC", "USA", "EU") 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), }
多組條形圖
然后,調(diào)用bar
畫(huà)圖,由于每個(gè)年份都要繪制中國(guó)、美國(guó)以及歐盟三個(gè)條形圖,所以需要合理規(guī)劃每個(gè)條形圖占據(jù)的寬度。在bar
中,默認(rèn)每組條形圖的x
坐標(biāo)均為整數(shù),故而下面將每個(gè)數(shù)據(jù)條的寬度設(shè)為0.25,并調(diào)用bar_label
為這些條形圖添加標(biāo)簽,以區(qū)分中美歐三個(gè)地區(qū)的劃分
import matplotlib.pyplot as plt x = np.arange(len(years)) width = 0.25 n = 0 for area, gdp in GDPS.items(): offset = width * n rects = plt.bar(x + offset, gdp, width, label=area) plt.bar_label(rects, padding=3) n += 1 plt.ylabel('GDP/$trilion') plt.ylim(10, 28) plt.xticks(x + width, years.astype(str)) plt.legend(loc='upper left') plt.show()
其中,legend
用于調(diào)控圖例所在位置,upper left
表示將圖例放在圖像的左上角。如果不想精心設(shè)置,則可設(shè)為best
,那么matplotli將會(huì)自行挑選一個(gè)合適的位置放置圖例。
效果如下
其中,藍(lán)色表示中國(guó),橘色表示美國(guó),綠色表示歐盟。從這個(gè)圖就可以非常直觀地看出,三者自2018到2022年的GDP變化情況。
堆疊條形圖
如果想更加直觀地查看2018到2022年間,中、美、歐三個(gè)地區(qū)的GDP增長(zhǎng)情況,那么比較好的方案是繪制堆疊條形圖。
堆疊條形圖的繪制邏輯是,先畫(huà)一個(gè)數(shù)據(jù)條,然后在這個(gè)數(shù)據(jù)條之上,再畫(huà)一個(gè)數(shù)據(jù)條,所以想看增長(zhǎng)率,就要用2022年的GDP減去2018年的,
GDPs = { "2018": np.array([13.89, 20.53, 15.98]), "2022": np.array([17.96, 25.46, 16.64]), } GDPs['2022'] -= GDPs['2018']
然后設(shè)置一個(gè)條形圖的底部,這樣每次繪制條形圖的時(shí)候,都以這個(gè)bottom
為底,就可以起到堆疊的效果
bottom = np.zeros(3) for lbl, gdp in GDPs.items(): p = plt.bar(areas, gdp, label=lbl, bottom=bottom) plt.bar_label(p, label_type='center') bottom += gdp plt.ylabel('GDP/$trilion') plt.legend(loc="upper right") plt.show()
結(jié)果如圖所示
可見(jiàn),這五年中國(guó)的GDP漲了4萬(wàn)億美元,美國(guó)則接近5萬(wàn)億,而歐盟則增長(zhǎng)甚微,給人一種有人退歐的感覺(jué)。
到此這篇關(guān)于python繪制分組條形圖的示例代碼的文章就介紹到這了,更多相關(guān)python分組條形圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python基礎(chǔ)之元編程知識(shí)總結(jié)
很多人不理解“元編程”是個(gè)什么東西,關(guān)于它也沒(méi)有一個(gè)十分準(zhǔn)確的定義.這篇文章要說(shuō)的是Python里的元編程,實(shí)際上也不一定就真的符合“元編程”的定義.只不過(guò)我無(wú)法找到一個(gè)更準(zhǔn)確的名字來(lái)代表這篇文章的主題,所以就借了這么一個(gè)名號(hào),需要的朋友可以參考下2021-05-05Python 內(nèi)置函數(shù)complex詳解
這篇文章主要介紹了Python 內(nèi)置函數(shù)complex詳解的相關(guān)資料,需要的朋友可以參考下2016-10-10Django使用Celery實(shí)現(xiàn)異步發(fā)送郵件
這篇文章主要為大家詳細(xì)介紹了Django如何使用Celery實(shí)現(xiàn)異步發(fā)送郵件的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-04-04Python使用Pandas庫(kù)實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)的讀寫(xiě)
這篇文章主要介紹了Python使用Pandas庫(kù)實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)的讀寫(xiě) ,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07使用Python實(shí)現(xiàn)對(duì)PDF文件進(jìn)行密碼保護(hù)
這篇文章主要為大家詳細(xì)了如何使用Python來(lái)實(shí)現(xiàn)PDF文件的密碼保護(hù),以確保只有授權(quán)的用戶可以訪問(wèn)文檔,文中的示例代碼簡(jiǎn)潔易懂,有需要的小伙伴可以參考一下2024-01-01Python實(shí)戰(zhàn)項(xiàng)目用PyQt5制作漫畫(huà)臉GUI界面
PyQt5 是用來(lái)創(chuàng)建Python GUI應(yīng)用程序的工具包。作為一個(gè)跨平臺(tái)的工具包,PyQt可以在所有主流操作系統(tǒng)上運(yùn)行,本文主要介紹了如何用PyQt5制作漫畫(huà)臉的GUI界面2021-10-10Python制作腳本幫女朋友搶購(gòu)清空購(gòu)物車(chē)
這篇文章主要介紹了Python制作的搶購(gòu)清空購(gòu)物車(chē)的腳本,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08Python 實(shí)現(xiàn)取矩陣的部分列,保存為一個(gè)新的矩陣方法
今天小編就為大家分享一篇Python 實(shí)現(xiàn)取矩陣的部分列,保存為一個(gè)新的矩陣方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11