如何使用matplotlib讓你的數(shù)據(jù)更加生動
1 引言
Matplotlib 是 Python 中最受歡迎的數(shù)據(jù)可視化軟件包之一,支持跨平臺運行,它是 Python 常用的 2D 繪圖庫,同時它也提供了一部分 3D 繪圖接口。Matplotlib 通常與 NumPy、Pandas 一起使用,是數(shù)據(jù)分析中不可或缺的重要工具之一。
本文就日常生活中常見的業(yè)務(wù)場景進(jìn)行展開討論,更詳盡的說明可以參考文檔。
2 折線圖
折線圖(line chart)是我們?nèi)粘9ぷ?、學(xué)習(xí)中經(jīng)常使用的一種圖表,它可以直觀的反映數(shù)據(jù)的變化趨勢。
可視化結(jié)果:
直線:左上直線圖形顯示。曲線:右上帶有樣式變化和標(biāo)記的折線預(yù)覽。
代碼如下:
def draw_line(): N = 8 t = np.linspace(0, 1, N) fig, (axA, axB) = plt.subplots(1, 2) # Line axA.plot(t, t, marker = 'o') axA.set_title('line') # Curve axB.plot(t, t, linestyle='--', marker='*',c='r', label='linear') axB.plot(t, t**2, linestyle='-.', marker='D',c='c', label='quadratic') axB.plot(t, t**3, linestyle=':', marker='^',c='y', label='cubic') axB.set_title('Curve') plt.legend() plt.show()
函數(shù)說明:
plot([x], y, [fmt], data=None, **kwargs)
- 可選參數(shù)[fmt] 是一個字符串來定義圖的基本屬性如:顏色(color),點型(marker),線型(linestyle)
- 對于顏色 color=‘r' 代表red 表示紅色;color=‘c' 代表cyan 表示藍(lán)綠;color=‘y' 代表yellow表示黃色
- 對于線型 linestyle='–' 代表dashed line style 為虛線;linestyle='-.‘代表 dash-dot line style 為點畫線; linestyle=':' 代表dotted line style 為點線
3 散點圖
散點圖用于在水平軸和垂直軸上繪制數(shù)據(jù)點,它表示了因變量隨自變量變化的趨勢。通俗地講,它反映的是一個變量受另一個變量的影響程度。
可視化結(jié)果:
散點圖:左上散點圖可視化,帶有顏色變化。氣泡圖:右上帶有顏色變化和刻度的氣泡圖。
代碼如下:
def draw_scatter(): N = 128 x = np.random.rand(N) y = np.random.rand(N) c = np.random.rand(N) s = np.random.rand(N) s = np.pi*(32*s)**2 cmapDisp = cm.get_cmap('rainbow') fig, (axA, axB) = plt.subplots(1, 2) # scatter axA.scatter(x, y, s=8,c=cmapDisp(c),alpha=0.75) axA.set_title('scatter') # bubble axB.scatter(x, y, c=cmapDisp(c), s=s, alpha=0.25, edgecolors='none') axB.set_title('bubble') plt.show()
函數(shù)說明:
scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs)
- x,y:表示的是大小為(n,)的數(shù)組,也就是我們即將繪制散點圖的數(shù)據(jù)點
- s:是一個標(biāo)量實數(shù)或者是一個數(shù)組大小為(n,),表示點的大小。
- c:表示的是顏色,是一個可選項。默認(rèn)是藍(lán)色'b',表示的是標(biāo)記的顏色,或者可以是一個表示顏色的字符,或者是一個長度為n的表示顏色的序列等等
- marker:表示的是標(biāo)記的樣式,默認(rèn)的是'o'。
- alpha:實數(shù),0-1之間。點的透明度,透明度設(shè)置的好能夠使圖好看。
4 柱狀圖
柱狀圖是一種用矩形柱來表示數(shù)據(jù)分類的圖表,柱狀圖可以垂直繪制,也可以水平繪制,它的高度與其所表示的數(shù)值成正比關(guān)系。柱狀圖顯示了不同類別之間的比較關(guān)系,圖表的水平軸 X 指定被比較的類別,垂直軸 Y 則表示具體的類別值。
可視化結(jié)果:
柱狀圖:左上圖形以組合在一起的平行柱狀圖顯示。
堆疊柱狀圖:右上圖形顯示在堆疊的柱狀圖上。
代碼如下:
def draw_bar(): N = 8 Hx = np.random.randint(18, 65, size=N) Mx = np.random.randint(18, 65, size=N) Hs = np.random.randint(1, 5, size=N) Ms = np.random.randint(1, 5, size=N) indice = np.arange(N) + 1 igrupos = ['G{}'.format(g) for g in indice] iidades = np.arange(0, 80, 5) larg = 0.25 fig, (axA, axB) = plt.subplots(1, 2) # Bar axA.bar(indice - larg, Hx, width=larg, yerr=Hs,color='c', align='edge', label='man') axA.bar(indice, Mx, width=larg, yerr=Ms, color='r', align='edge', label='women') axA.set_title('Bar') axA.set_xticks(indice) axA.set_yticks(iidades) axA.set_xticklabels(igrupos) axA.legend() # Barras axB.bar(indice, Hx, color='c', label='man', yerr=Hs) axB.bar(indice, Mx, color='r', bottom=Hx, label='women', yerr=Ms) axB.set_title('Barras ') axB.set_xticks(indice) axB.set_xticklabels(igrupos) axB.set_yticks(iidades*2) axB.legend() plt.show()
函數(shù)說明:
bar(x, height, width, bottom, align)
- x :一個標(biāo)量序列,代表柱狀圖的x坐標(biāo),默認(rèn)x取值是每個柱狀圖所在的中點位置,或者也可以是柱狀圖左側(cè)邊緣位置。
- height: 一個標(biāo)量或者是標(biāo)量序列,代表柱狀圖的高度。
- width: 可選參數(shù),標(biāo)量或類數(shù)組,柱狀圖的默認(rèn)寬度值為 0.8。
- bottom: 可選參數(shù),標(biāo)量或類數(shù)組,柱狀圖的y坐標(biāo)默認(rèn)為None。
- algin: 有兩個可選項 {“center”,“edge”},默認(rèn)為 ‘center',該參數(shù)決定 x 值位于柱狀圖的位置。
- bottom: 該參數(shù)可以指定柱狀圖開始堆疊的起始值,一般從底部柱狀圖的最大值開始,依次類推
- yerr: 可選參數(shù), 這里針對垂直型誤差,以誤差棒的形式顯示
5 餅狀圖
餅狀圖用來顯示一個數(shù)據(jù)系列,具體來說,餅狀圖顯示一個數(shù)據(jù)系列中各項目的占項目總和的百分比。
可視化結(jié)果:
餅圖:左上玫瑰圖顯示兩層信息(外層標(biāo)簽和內(nèi)層比例分布)。
雷達(dá)圖:右上雷達(dá)圖形顯示,具有基于中心的值和基于徑向的變化。
代碼如下:
def test_pie(): etiqueta = list('ABCDEFGHIJKL') M, N = 128, len(etiqueta) valor = np.random.random(N)*0.9 + 0.1 var = np.random.random(M) # param cmapRadial = cm.get_cmap('magma') theta = 2*np.pi*np.arange(N)/N omega = 2*np.pi*np.arange(M)/M valor_ = np.append(valor, [valor[0]]) var_ = np.append(var, [var[0]]) theta_ = np.append(theta, [theta[0]]) omega_ = np.append(omega, [omega[0]]) raio = 1.25 mult = 0.15 # draw fig = plt.figure() axA = fig.add_subplot(121, aspect='equal') axB = fig.add_subplot(122, projection='polar') # Pizza axA.pie(valor, labels=etiqueta, pctdistance=0.9,autopct='%1.1f%%', radius=1.1) axA.pie(var, radius=0.9, colors=cmapRadial(var)) axA.set_title('Pizza') centro = plt.Circle((0,0), 0.75, fc='white') axA.add_patch(centro) # Radar axB.plot(theta_, valor_, marker='o', color='black', label='variable') axB.fill_between(theta_, 0, valor_, facecolor='black', alpha=0.25) axB.plot(omega_, raio + var_*mult, color='y', label='change') axB.plot(omega_, raio - var_*mult, color='y') axB.fill_between(omega_, raio - var_*mult, raio + var_*mult,facecolor='y', alpha=0.25) axB.set_title('Radar') axB.set_xticks(theta) axB.set_xticklabels(etiqueta) axB.set_rticks(np.linspace(0, 1.5, 7)) axB.legend() plt.show()
函數(shù)說明:
pie(x, labels=None, colors=None, autopct=None, pctdistance=0.6, labeldistance=1.1, radius=None)
- x: 數(shù)組序列,數(shù)組元素對應(yīng)扇形區(qū)域的數(shù)量大小。
- labels: 列表字符串序列,為每個扇形區(qū)域備注一個標(biāo)簽名字。
- color : 為每個扇形區(qū)域設(shè)置顏色,默認(rèn)按照顏色周期自動設(shè)置。
- autopct :控制餅圖內(nèi)百分比設(shè)置,可以使用format字符串或者format function
'%1.1f'指小數(shù)點前后位數(shù)(沒有用空格補齊) - labeldistance :label標(biāo)記的繪制位置,相對于半徑的比例,默認(rèn)值為1.1, 如<1則繪制在餅圖內(nèi)側(cè);
- pctdistance :類似于labeldistance,指定autopct的位置刻度,默認(rèn)值為0.6;
- radius :控制餅圖半徑,默認(rèn)值為1;
6 總結(jié)
本文詳細(xì)地介紹了使用matplotlib畫折線圖、散點圖、餅狀圖以及柱狀圖的樣例,并給出了相關(guān)可視化效果。
到此這篇關(guān)于如何使用matplotlib讓你的數(shù)據(jù)更加生動的文章就介紹到這了,更多相關(guān)matplotlib數(shù)據(jù)更生動內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python十進(jìn)制轉(zhuǎn)二進(jìn)制的詳解
在本篇文章里小編給大家整理了關(guān)于python十進(jìn)制轉(zhuǎn)二進(jìn)制的相關(guān)知識點內(nèi)容,需要的朋友們可以參考學(xué)習(xí)下。2020-02-02Python實現(xiàn)App自動簽到領(lǐng)取積分功能
這篇文章主要介紹了Python實現(xiàn)App自動簽到領(lǐng)取積分功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09使用Pandas實現(xiàn)數(shù)據(jù)的清理的入門詳解
數(shù)據(jù)清理是數(shù)據(jù)分析過程中的關(guān)鍵步驟,它涉及識別缺失值、重復(fù)行、異常值和不正確的數(shù)據(jù)類型,本文將介紹6個經(jīng)常使用的數(shù)據(jù)清理操作,希望對大家有所幫助2023-08-08Python實現(xiàn)string字符串連接的方法總結(jié)【8種方式】
這篇文章主要介紹了Python實現(xiàn)string字符串連接的方法,結(jié)合實例形式總結(jié)分析了Python實現(xiàn)字符串連接的8種常見操作技巧,需要的朋友可以參考下2018-07-07pytorch實現(xiàn)對輸入超過三通道的數(shù)據(jù)進(jìn)行訓(xùn)練
今天小編就為大家分享一篇pytorch實現(xiàn)對輸入超過三通道的數(shù)據(jù)進(jìn)行訓(xùn)練,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Dockerfile構(gòu)建一個Python Flask 鏡像
這篇文章主要介紹了Dockerfile構(gòu)建一個Python Flask 鏡像,對正在學(xué)習(xí)的你有一定的參考價值,需要的小伙伴可以參考一下2022-01-01python爬取bilibili網(wǎng)頁排名,視頻,播放量,點贊量,鏈接等內(nèi)容并存儲csv文件中
這篇文章主要介紹了python爬取bilibili網(wǎng)頁排名,視頻,播放量,點贊量,鏈接等內(nèi)容并存儲csv文件中,首先要了解html標(biāo)簽,標(biāo)簽有主有次,大致了解以一下,主標(biāo)簽是根標(biāo)簽,也是所有要爬取的標(biāo)簽的結(jié)合體,需要的朋友可以參考一下2022-01-01