python繪制分組條形圖的示例代碼
數(shù)據(jù)導(dǎo)入
我們經(jīng)常會遇到對比多個統(tǒng)計量隨時間變化的圖像,比如想知道中國、美國以及歐盟最近幾年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", "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
畫圖,由于每個年份都要繪制中國、美國以及歐盟三個條形圖,所以需要合理規(guī)劃每個條形圖占據(jù)的寬度。在bar
中,默認(rèn)每組條形圖的x
坐標(biāo)均為整數(shù),故而下面將每個數(shù)據(jù)條的寬度設(shè)為0.25,并調(diào)用bar_label
為這些條形圖添加標(biāo)簽,以區(qū)分中美歐三個地區(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將會自行挑選一個合適的位置放置圖例。
效果如下
其中,藍(lán)色表示中國,橘色表示美國,綠色表示歐盟。從這個圖就可以非常直觀地看出,三者自2018到2022年的GDP變化情況。
堆疊條形圖
如果想更加直觀地查看2018到2022年間,中、美、歐三個地區(qū)的GDP增長情況,那么比較好的方案是繪制堆疊條形圖。
堆疊條形圖的繪制邏輯是,先畫一個數(shù)據(jù)條,然后在這個數(shù)據(jù)條之上,再畫一個數(shù)據(jù)條,所以想看增長率,就要用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è)置一個條形圖的底部,這樣每次繪制條形圖的時候,都以這個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é)果如圖所示
可見,這五年中國的GDP漲了4萬億美元,美國則接近5萬億,而歐盟則增長甚微,給人一種有人退歐的感覺。
到此這篇關(guān)于python繪制分組條形圖的示例代碼的文章就介紹到這了,更多相關(guān)python分組條形圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 內(nèi)置函數(shù)complex詳解
這篇文章主要介紹了Python 內(nèi)置函數(shù)complex詳解的相關(guān)資料,需要的朋友可以參考下2016-10-10Django使用Celery實現(xiàn)異步發(fā)送郵件
這篇文章主要為大家詳細(xì)介紹了Django如何使用Celery實現(xiàn)異步發(fā)送郵件的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-04-04Python使用Pandas庫實現(xiàn)MySQL數(shù)據(jù)庫的讀寫
這篇文章主要介紹了Python使用Pandas庫實現(xiàn)MySQL數(shù)據(jù)庫的讀寫 ,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python實戰(zhàn)項目用PyQt5制作漫畫臉GUI界面
PyQt5 是用來創(chuàng)建Python GUI應(yīng)用程序的工具包。作為一個跨平臺的工具包,PyQt可以在所有主流操作系統(tǒng)上運行,本文主要介紹了如何用PyQt5制作漫畫臉的GUI界面2021-10-10Python 實現(xiàn)取矩陣的部分列,保存為一個新的矩陣方法
今天小編就為大家分享一篇Python 實現(xiàn)取矩陣的部分列,保存為一個新的矩陣方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11