Python用?matplotlib?繪制柱狀圖
復(fù)習(xí)回顧:
Python 為數(shù)據(jù)展示提供了大量?jī)?yōu)秀的功能包,其中 matplotlib 模塊可以方便繪制制作折線圖、柱狀圖、散點(diǎn)圖等高質(zhì)量的數(shù)據(jù)包。
關(guān)于 matplotlib 模塊,我們前期已經(jīng)對(duì)matplotlib進(jìn)行基本框架、以及常用方法的學(xué)習(xí)
?matplotlib 模塊基礎(chǔ)知識(shí):對(duì)matplotlib模塊進(jìn)行初步認(rèn)識(shí),對(duì)常用的方法進(jìn)行學(xué)習(xí)
matplotlib 模塊底層原理:matplotlib 模塊包含腳本層、美工層及后端層三層細(xì)節(jié)了解
matplotlib 模塊折線圖繪制:總結(jié)折線圖相關(guān)屬性和方法
在 matplotlib 模塊提供的圖表中,除了折線圖使用最多外,柱狀圖也是我們?nèi)粘?shù)據(jù)分析的圖表。
接下來(lái)我們開(kāi)始學(xué)習(xí)繪制柱狀圖相關(guān)屬性和方法
1. 柱狀圖概述
1.1什么是柱狀圖
- 柱狀圖又稱(chēng)為條形圖,是一種以長(zhǎng)方形的長(zhǎng)度為變量數(shù)據(jù)進(jìn)行統(tǒng)計(jì)的圖表
- 柱狀圖用來(lái)比較兩個(gè)或以上類(lèi)型
- 柱狀圖只有一個(gè)以長(zhǎng)方形的長(zhǎng)度為變量
- 柱狀圖可以橫向排列或者多維方式展示
1.2柱狀圖使用場(chǎng)景
- 柱狀圖適用在較小數(shù)據(jù)集的分析
- 適用二維數(shù)據(jù)集,只比較一個(gè)維度數(shù)據(jù)差異項(xiàng)
- 直觀展示各個(gè)體之間數(shù)據(jù)的差異
- 表現(xiàn)離散型的時(shí)間序列
1.3柱狀圖繪制步驟
- 導(dǎo)入matplotlib.pyplot模塊
- 準(zhǔn)備數(shù)據(jù),可以使用numpy/pandas整理數(shù)據(jù)
- 調(diào)用pyplot.bar()繪制柱狀圖
1.3案例展示
本次,我們分析過(guò)去5年內(nèi)的產(chǎn)品年銷(xiāo)量展示
案例所用到的數(shù)據(jù)如下:
import random x_data = ["20{}年".format(i) for i in range(16,21)] y_data = [random.randint(100,300) for i in range(6)]
繪制柱狀圖
import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"]=['SimHei'] plt.rcParams["axes.unicode_minus"]=False for i in range(len(x_data)): plt.bar(x_data[i],y_data[i]) plt.title("銷(xiāo)量分析") plt.xlabel("年份") plt.ylabel("銷(xiāo)量") plt.show()
2. 柱狀圖屬性
2.1柱狀體顏色填充
- facecolor(fc)關(guān)鍵字
- color 關(guān)鍵字
- 顏色簡(jiǎn)稱(chēng):
屬性值 | 說(shuō)明 | 屬性值 | 說(shuō)明 |
---|---|---|---|
"b"/"bule" | 藍(lán)色 | "m"/"magenta" | 品紅 |
"g" /"green" | 綠色 | "y"/"yellow" | 黃色 |
"r"/"red" | 紅色 | "k"/"black" | 黑色 |
"c"/"cyan" | 青色 | "w"/"white" |
- 格式形式:(r,g,b)
- 取值范圍:0~1
2.2狀描邊設(shè)置
柱狀體邊框顏色
- edgecolor 或者 ec
柱狀體邊框樣式
- linestyle 或者 ls
- 線條樣式:
屬性值 | 說(shuō)明 |
---|---|
"-" 、"solid" | 默認(rèn)實(shí)線顯示 |
"--"、"dashed" | 虛線 |
"-." "dashdot" | 點(diǎn)劃線 |
":"、"dotted" | 虛線 |
"None" """" | 空 |
2.3狀體邊框?qū)挾?/h3>
- linewidth 或者 lw
- 柱狀圖填充樣式
hatch: 設(shè)置填充樣式
屬性取值:{'/', '', '|', '-', '+', 'x', 'o', 'O', '.', '*'} |
2.4刻度標(biāo)簽
- tickle label:默認(rèn)使用數(shù)字標(biāo)簽
我們對(duì) 第一節(jié)柱狀圖添加邊框樣式為"--",添加指定rgb顏色,填充圓圈
for i in range(len(x_data)): plt.bar(x_data[i],y_data[i],color=(0.2*i,0.2*i,0.2*i),linestyle="--",hatch="o")
3. 堆疊柱狀圖
- 在柱狀圖中,我們會(huì)在同時(shí)對(duì)比兩組數(shù)據(jù)在同一類(lèi)中的表現(xiàn)形式,因此需要繪制堆疊柱狀圖
- bottom : 條形底座的y坐標(biāo),默認(rèn)值為0
在第一節(jié)案例中,添加一組y軸數(shù)據(jù)所有數(shù)據(jù)如下:
x_data = ["20{}年".format(i) for i in range(16,21)] y_data = list(random.randint(100,300) for i in range(5)) y2_data = list(random.randint(100,300) for i in range(5))
再添加一次pyplot.bar方法,添加bottom屬性
plt.bar(x_data,y_data,lw=0.5,fc="r",label="Phone") plt.bar(x_data,y2_data,lw=0.5,fc="b",label="Android",bottom=y_data)
4. 并列柱狀圖
在繪制并列的柱狀圖中,要控制好每個(gè)柱狀體的位置和大小可以使用width屬性
- width: 設(shè)置每組柱狀體的寬度
- x軸:x軸的寬度每組直接也要設(shè)置好
例如繼續(xù)改造上面案例,我們?yōu)閎ar1和bar2添加了width屬性后,單獨(dú)設(shè)置x軸并排的寬度為0.3
x_width = range(0,len(x_data)) x2_width = [i+0.3 for i in x_width] plt.bar(x_width,y_data,lw=0.5,fc="r",width=0.3,label="Phone") plt.bar(x2_width,y2_data,lw=0.5,fc="b",width=0.3,label="Android") plt.xticks(range(0,5),x_data)
5. 水平柱狀圖
柱狀圖中,有時(shí)候需要讓柱狀圖水平放置,比較差異,我們這時(shí)候需要使用到barh
方法
- pyplot.barh(y,width):繪制水平柱狀圖
- 結(jié)合上述案例,改用barh方法
x_data = ["20{}年".format(i) for i in range(16,21)] y_data = list(random.randint(100,300) for i in range(5)) y2_data = list(random.randint(100,300) for i in range(5)) x_width = range(0,len(x_data)) x2_width = [i+0.3 for i in x_width] plt.barh(x_width,y_data,lw=0.5,fc="r",height=0.3,label="Phone") plt.barh(x2_width,y2_data,lw=0.5,fc="b",height=0.3,label="Android") plt.yticks(range(0,5),x_data) plt.legend() plt.title("銷(xiāo)量分析") plt.ylabel("年份") plt.xlabel("銷(xiāo)量") plt.show()
6. 添加折線柱狀圖
我們?cè)诓榭粗鶢顖D時(shí),有時(shí)候會(huì)需要輔助折線來(lái)查看
- 使用
pyplot.plot()
方法匯總折線圖 - 同時(shí)使用
pyplot.text()
顯示坐標(biāo)值 - 當(dāng)堆疊圖時(shí),需要計(jì)算好折線相對(duì)位置
plt.plot(x_data,y_data,color="pink",linestyle="--") plt.plot(x_data, y2_data+200, color="skyblue", linestyle="-.") # 柱狀圖 plt.bar(x_data,y_data,lw=0.5,fc="r",width=0.3,label="Phone",alpha=0.5) plt.bar(x_data,y2_data, lw=0.5, fc="b", width=0.3, label="Android",alpha=0.5,bottom=y_data) for i,j in zip(x_data,y_data): plt.text(i,j+0.05,"%d"%j,ha="center",va="bottom") for i2,j2 in zip(x_data,y2_data): plt.text(i2,j2+180,"%d"%j2,ha="center",va="bottom")
7. 正負(fù)柱狀圖
我們需要使用Axes對(duì)象來(lái)設(shè)置坐標(biāo)軸的位置
- 首先使用
pyplot.gca()
方法創(chuàng)建axes對(duì)象 - 然后使用
matplotlib.spines
模塊調(diào)用set_position設(shè)置坐標(biāo)軸位置 - set_position 設(shè)置軸位置點(diǎn)
- spines[]選項(xiàng)有"
left"|"bottom"|"width"|"height"
- set_position 值格式為(位置類(lèi)型,數(shù)量);位置類(lèi)型;"outward"|"axes"|"data"|;數(shù)量:中心->("軸",0.5),零->("數(shù)據(jù)",0.0)
y_data = np.random.randint(100, 300,5) y2_data = np.random.randint(100, 300,5) ax = plt.gca() ax.spines["bottom"].set_position(('data', 0)) plt.bar(x_data,+y_data,lw=0.5,fc="r",width=0.3,label="Phone") plt.bar(x_data,-y2_data, lw=0.5, fc="b", width=0.3, label="Android") for i,j in zip(x_data,y_data): plt.text(i,j,"%d"%j,ha="center",va="top") for i2,j2 in zip(x_data,y2_data): plt.text(i2,-j2,"%d"%j2,ha="center",va="bottom")
總結(jié):
本文我們atplotlib模塊中詳細(xì)學(xué)習(xí)繪制各種柱狀圖標(biāo)相關(guān)屬性和方法,在遇到需要直觀展示離散數(shù)據(jù)點(diǎn)的差異時(shí),我們可以使用bar()或者barh()繪制美觀的圖表。
到此這篇關(guān)于Python用 matplotlib 繪制柱狀圖的文章就介紹到這了,更多相關(guān)matplotlib 繪制柱狀圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python使用matplotlib繪制動(dòng)畫(huà)的方法
- python使用matplotlib繪制折線圖教程
- python使用matplotlib繪制柱狀圖教程
- python學(xué)習(xí)之matplotlib繪制散點(diǎn)圖實(shí)例
- Python通過(guò)matplotlib繪制動(dòng)畫(huà)簡(jiǎn)單實(shí)例
- Python使用matplotlib繪制多個(gè)圖形單獨(dú)顯示的方法示例
- python使用matplotlib模塊繪制多條折線圖、散點(diǎn)圖
- python使用matplotlib繪制熱圖
- Python?matplotlib?繪制散點(diǎn)圖詳解建議收藏
- python中matplotlib的用法及繪制簡(jiǎn)單圖形詳解
相關(guān)文章
Python3實(shí)現(xiàn)的反轉(zhuǎn)單鏈表算法示例
這篇文章主要介紹了Python3實(shí)現(xiàn)的反轉(zhuǎn)單鏈表算法,結(jié)合實(shí)例形式總結(jié)分析了Python基于迭代算法與遞歸算法實(shí)現(xiàn)的翻轉(zhuǎn)單鏈表相關(guān)操作技巧,需要的朋友可以參考下2019-03-03Python整型運(yùn)算之布爾型、標(biāo)準(zhǔn)整型、長(zhǎng)整型操作示例
這篇文章主要介紹了Python整型運(yùn)算之布爾型、標(biāo)準(zhǔn)整型、長(zhǎng)整型操作,結(jié)合具體實(shí)例形式分析了Python中布爾型、標(biāo)準(zhǔn)整型、長(zhǎng)整型等相關(guān)運(yùn)算技巧,代碼備有詳盡注釋,需要的朋友可以參考下2017-07-07結(jié)合OpenCV與TensorFlow進(jìn)行人臉識(shí)別的實(shí)現(xiàn)
這篇文章主要介紹了結(jié)合OpenCV與TensorFlow進(jìn)行人臉識(shí)別的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Pandas-DataFrame知識(shí)點(diǎn)匯總
這篇文章主要介紹了Pandas-DataFrame知識(shí)點(diǎn)匯總,DataFrame是一種表格型數(shù)據(jù)結(jié)構(gòu),它含有一組有序的列,每列可以是不同的值,下面我們一起進(jìn)入文章了解更多詳細(xì)內(nèi)容吧,需要的小伙伴也可以參考一下2022-03-03python3用PyPDF2解析pdf文件,用正則匹配數(shù)據(jù)方式
這篇文章主要介紹了python3用PyPDF2解析pdf文件,用正則匹配數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05Python自動(dòng)化辦公之Word文件內(nèi)容的讀取
word、excel、PPT,雖然說(shuō)是特殊文件,其實(shí)也是實(shí)際工作中我們經(jīng)常會(huì)用到的文件類(lèi)型。本文將為大家詳解Python讀取Word文件和文件內(nèi)容的方法,感興趣的可以了解一下2022-05-05