日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

学习笔记——matplotlib学习

發(fā)布時(shí)間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习笔记——matplotlib学习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

數(shù)據(jù)可視化何其多,除了Tableau,ECharts,Matplotlib也是神器之一,將枯燥無(wú)味的數(shù)據(jù)形象直觀地展示出來(lái),是很有成就感的事情。Matplotlib作為數(shù)據(jù)科學(xué)的的必備庫(kù),算得上是python可視化領(lǐng)域的元老,更是很多高級(jí)可視化庫(kù)的底層基礎(chǔ),其重要性不言而喻。本文主要學(xué)習(xí)的是matplotlib.pyplot的可視化應(yīng)用

文章目錄

  • 一、數(shù)據(jù)可視化類型
  • 二、相關(guān)函數(shù)簡(jiǎn)介
  • 三、一些常用的基礎(chǔ)API
  • 四、繪圖3步走
  • 五、幾種常用圖表
    • 1、柱狀圖
    • 2、折線圖
    • 3、餅圖
    • 4、散點(diǎn)圖
    • 5、氣泡圖/云圖
    • 6、直方圖
    • 7、雷達(dá)圖

一、數(shù)據(jù)可視化類型


二、相關(guān)函數(shù)簡(jiǎn)介

matplotlib.pyplot是一個(gè)命令型函數(shù)集合,它可以讓人們像使用MATLAB一樣使用matplotlib。在matplotlib.pyplot庫(kù)中有plt子庫(kù),該子庫(kù)提供了7個(gè)用于讀取和顯示的函數(shù),17個(gè)用于繪制基礎(chǔ)圖表的函數(shù)、3個(gè)區(qū)域填充函數(shù)、9個(gè)坐標(biāo)軸設(shè)置函數(shù)以及11個(gè)標(biāo)簽與文本設(shè)置函數(shù),具體如下表1-1~1-5所示:

表1-1 plt庫(kù)中的讀取和顯示函數(shù) 函數(shù)名稱函數(shù)作用
plt.legend( )在繪圖區(qū)域放置繪圖標(biāo)簽
plt.show( )顯示繪制的圖像
plt.matshow( )在窗口中顯示數(shù)組矩陣
plt.imshow( )在axes上顯示圖像
plt.imsave( )保存數(shù)組為圖像
plt.savefig( )設(shè)置圖像保存的格式
plt.imread( )從圖像文件中讀取數(shù)組
表1-2 plt庫(kù)中的基礎(chǔ)圖表函數(shù) 函數(shù)名稱 函數(shù)作用
plt. plot(x,y,label,color,width)根據(jù)(x,y)數(shù)組繪制直、曲線
plt. box(data,notch,position)繪制一個(gè)箱型圖
plt. bar(left,height,width,bottom)繪制一個(gè)條形圖
plt. barh(bottom,width,height,left)繪制一個(gè)橫向條形圖
plt. polar(theta,r)繪制極坐標(biāo)圖
plt. pie(data,exxplode)繪制餅圖
plt. psd(x,NFFT=256,pad_to,F)繪制功率譜密度圖
plt. specgram(x,NFFT=256,Fs)繪制譜圖
plt. cohere(x,y,NFFT=256,Fs)繪制X-Y的相關(guān)性函數(shù)
plt. scatter( )繪制散點(diǎn)圖
plt. step(x,y,where)繪制步階圖
plt. hist(x,bins,normed)繪制直方圖
plt. contour(X,Y,Z,N)繪制等值線
plt. clines( )就只垂直線
plt. stem(x,y,linefmt,markerfmt,basefmt)繪制曲線中每個(gè)點(diǎn)到水平軸線的垂線
plt. plot_date( )繪制數(shù)據(jù)日期
plt. plotfile( )繪制數(shù)據(jù)后寫入文件
表1-3 區(qū)域填充函數(shù) 函數(shù)名稱函數(shù)作用
fill(x,y,c,color)填充多邊形
fill_between(x,y1,y2,where,color)填充曲線圍成的多邊形
fill_betweenx(y,x1,x2,where,hold)填充水平線之間的區(qū)域
表1-4 坐標(biāo)軸設(shè)置函數(shù) 函數(shù)名稱函數(shù)作用
plt. axis( )獲取設(shè)置軸屬性的快捷鍵
plt. xlim( )設(shè)置X軸的取值范圍
plt. ylim( )設(shè)置Y軸的取值范圍
plt. xscale( )設(shè)置X軸縮放
plt. yscale( )設(shè)置Y軸縮放
plt. autoscale( )自動(dòng)縮放軸視圖
plt. text( )為axes圖添加注釋
plt. thetagrids( )設(shè)置極坐標(biāo)網(wǎng)絡(luò)
plt. grid( )網(wǎng)格顯示
表1-5 標(biāo)簽與文本設(shè)置函數(shù) 函數(shù)名稱函數(shù)作用
plt. figlegend( )為全局繪圖區(qū)域放置圖注
plt. xlabel( )設(shè)置當(dāng)前X軸的文字
plt. ylabel( )設(shè)置當(dāng)前Y軸的文字
plt. xticks( )設(shè)置當(dāng)前X軸刻度位置的文字和值
plt. yticks( )設(shè)置當(dāng)前Y軸刻度位置的文字和值
plt. clabel( )設(shè)置等高線數(shù)據(jù)
plt. get_figlabels( )返回當(dāng)前繪圖區(qū)域的標(biāo)簽列表
plt. figtext( )為全局繪圖區(qū)域添加文本信息
plt. title( )設(shè)置標(biāo)題
plt. suptitle( )設(shè)置總標(biāo)題
plt. annotate( )為文本添加注釋

注意:均可通過help()命令查看API,用到什么查什么。


補(bǔ)充:

繪圖接口有2種形式,分別是面向"當(dāng)前"圖的plt接口和面向?qū)ο蠼涌?#xff0c;在這2種方式的相應(yīng)接口中,多數(shù)接口名是一致的,例如:plt.plot()和axes.plot()、plt.legend()和axes.legend(),但也有一些不一致的接口:

plt.axes()——fig.add_axes()plt.subplot()——fig.add_subplot()plt.GridSped()——fig.add_gridspec()plt.xlabel()——axes.set_xlabel()plt.ylabel()——axes.set_ylabel()plt.xlim()——axes.set_xlim()plt.ylim()——axes.set_ylim()plt.title()——axes.set_title()

對(duì)此,一方面兩類接口雖然略有區(qū)別,但也還算有規(guī)律;另一方面,在面向?qū)ο罄L圖配置圖例時(shí),有更為便捷的設(shè)置圖例接口axes.set(),其可以接收多種參數(shù)一次性完成所有配置,這也正是面向?qū)ο罄L圖的強(qiáng)大之處。


三、一些常用的基礎(chǔ)API

1、解決中文亂碼,防止方塊化

plt.rcParams["font.sans-serif"]="SimHei"

2、解決負(fù)號(hào)不能正常顯示的問題

plt.rcParams["axes.unicode_minus"]=False

3、在jupyter notebook上面顯示圖片

%matplotlib inline

4、作圖使用svg格式顯示更為清晰

%config InlineBackend.figure_format="svg"

5、設(shè)置畫布

plt.figure() 創(chuàng)建一個(gè)全局繪圖區(qū)域 參數(shù): num:設(shè)置圖像編號(hào) figsize:設(shè)置圖像的寬度和高度,單位為英寸 facecolor:設(shè)置圖像的背景顏色 dpi:設(shè)置繪圖對(duì)象的分辨率 edgecplor:設(shè)置圖像的邊框顏色

6、創(chuàng)建子圖

fig=plt.figure()fig.add_subplot(3,2,2) #3X2的第2個(gè)圖形或者plt.subplot(3,2,2) #3X2的第2個(gè)圖形

四、繪圖3步走


五、幾種常用圖表

下面將介紹幾種較為常用的圖表:柱狀圖、餅圖、折線圖、散點(diǎn)圖、氣泡圖/云圖、雷達(dá)圖。

1、柱狀圖

柱狀圖也叫條形圖,是一種以長(zhǎng)方形的長(zhǎng)度為變量來(lái)表達(dá)圖形的統(tǒng)計(jì)報(bào)告圖,它由一系列高度不等的縱向條紋表示數(shù)據(jù)分布的情況,用來(lái)比較兩個(gè)或兩個(gè)以上的數(shù)值。

它適用于二維數(shù)據(jù)集,并且該數(shù)據(jù)集只需要(或者說(shuō)“只能”更準(zhǔn)確一些)比較其中一個(gè)維度。實(shí)現(xiàn)比較的手段就是利用柱狀體之間的高度差來(lái)反映數(shù)據(jù)差異,因?yàn)槿说娜庋蹖?duì)于高度的辨識(shí)度是較高的。但是,當(dāng)數(shù)據(jù)集的規(guī)模太過龐大時(shí),柱狀體太多也會(huì)在所難免的沒有那么方便地進(jìn)行比較了,所以柱狀圖一般只適用于中小規(guī)模的數(shù)據(jù)集。

柱狀圖實(shí)際上是用來(lái)表示分組(或離散)變量的可視化

API:

bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs) 參數(shù)說(shuō)明類型
xx坐標(biāo)int,float
height條形的高度int,float
width寬度0~1,默認(rèn)0.8
botton條形的起始位置也是y軸的起始坐標(biāo)
align條形的中心位置“center”,"edge"邊緣
color條形的顏色“r",“b”,“g”,"#123465",默認(rèn)“b"
edgecolor邊框的顏色同上
linewidth邊框的寬度像素,默認(rèn)無(wú),int
tick_label下標(biāo)的標(biāo)簽可以是元組類型的字符組合
logy軸使用科學(xué)計(jì)算法表示bool
orientation是豎直條還是水平條豎直:“vertical”,水平條:“horizontal”

示例:

import numpy as np import matplotlib.pyplot as plt size = 5 a = np.random.random(size) b = np.random.random(size) c = np.random.random(size) d = np.random.random(size) x = np.arange(size)total_width, n = 0.8, 3 # 有多少個(gè)類型,只需更改n即可 width = total_width / n x = x - (total_width - width) / 2plt.bar(x, a, width=width, label='a') plt.bar(x + width, b, width=width, label='b') plt.bar(x + 2 * width, c, width=width, label='c') plt.legend() plt.show()

結(jié)果展示:

水平條形圖

繪制方法一:使用plt.bar()
還用上的數(shù)據(jù),參數(shù)orientation默認(rèn)是’vertical’垂直,改為"horizontal"(水平)。
注意:
1、x的起始位置,水平條底部,以及長(zhǎng)度的取值變化
2、添加標(biāo)簽的時(shí)候enumerate()函數(shù)遍歷出的結(jié)果(自動(dòng)加序號(hào)),以及text()函數(shù)的參數(shù)。

示例:

import numpy as np import matplotlib.pyplot as plt size = 5 a = np.random.random(size) b = np.random.random(size) c = np.random.random(size) d = np.random.random(size) x = np.arange(size)total_width, n = 0.8, 3 # 有多少個(gè)類型,只需更改n即可 width = total_width / n x = x - (total_width - width) / 2plt.bar(0,bottom=x,height=width,width=a, label='a',orientation="horizontal") plt.bar(0,bottom=x+width,height=width,width=b,label='b',orientation="horizontal") plt.bar(0,bottom=x+2*width,height=width,width=c,label='c',orientation="horizontal")plt.legend() plt.show()

結(jié)果展示:

繪制方法二:使用plt.barh()

barh(y, width, height=0.8, left=None, *, align='center', **kwargs)

還用上的數(shù)據(jù),參數(shù)orientation為"horizontal"(水平)。

示例:

import numpy as np import matplotlib.pyplot as plt size = 5 a = np.random.random(size) b = np.random.random(size) c = np.random.random(size) d = np.random.random(size) x = np.arange(size)total_width, n = 0.8, 3 # 有多少個(gè)類型,只需更改n即可 width = total_width / n x = x - (total_width - width) / 2plt.barh(x, left=0,height=width,width=a,orientation="horizontal",alpha = 0.8) plt.barh(x+width, left=0,height=width,width=b,orientation="horizontal",alpha = 0.8) plt.barh(x+2*width, left=0,height=width,width=c,orientation="horizontal",alpha = 0.8) plt.legend() plt.show()

結(jié)果展示:


2、折線圖

在折線圖中,我們通常更關(guān)注于每條折線的走勢(shì)(或者說(shuō)“更能看出數(shù)據(jù)的走向”,所以它適用于整體趨勢(shì)比單個(gè)數(shù)據(jù)點(diǎn)更重要的二維數(shù)據(jù)集。而正因?yàn)樗P(guān)心的是整體而非個(gè)別的點(diǎn),所以當(dāng)數(shù)據(jù)集的規(guī)模越大時(shí),折線圖所呈現(xiàn)的整體會(huì)更加的準(zhǔn)確。每個(gè)數(shù)據(jù)集在折線圖中僅表現(xiàn)為一條折線,這使得它可以同時(shí)承載多個(gè)數(shù)據(jù)集并提供比較。

API:

plt.plot(x,y,linestyle,linewidth,color,marker,markersize,markeredgecolor,markerfactcolor,label,alpha)

參數(shù):

x,y:指定折線圖的x軸/y軸的數(shù)據(jù);linestyle:指定折線的類型,可以是實(shí)線、虛線、點(diǎn)虛線等,默認(rèn)文實(shí)線;linewidth:指定折線的寬度marker:設(shè)置點(diǎn)的形狀markersize:設(shè)置點(diǎn)的大小markeredgecolor:設(shè)置點(diǎn)的邊框色markerfactcolor:設(shè)置點(diǎn)的填充色label:為折線圖添加標(biāo)簽

常用的marker風(fēng)格:

+”:十字 “O”:圓圈“*”:星型 “s”:正方形“p”:五邊形 “h”:六邊形“d”:小菱形 “D”:鉆石

常用的color風(fēng)格:

“b”:blue藍(lán)色 “g”:green綠色 “k”:黑色 “w”:white白色“r”:red紅色 “y”:yellow黃色“c”:cyan青色 “m”:magenta品紅

示例:

import numpy as np import matplotlib.pyplot as plt plt.figure(figsize=(10,6)) x = np.arange(-2*np.pi,2*np.pi,0.01) #x = np.arange(-2*np.pi,2*np.pi,0.01) x1 = np.arange(-2*np.pi,2*np.pi,0.2) y1 = np.sin(3*x1)/x1 y2 = np.sin(2*x)/x y3 = np.sin(x)/x plt.plot(x1,y1,c='b',linestyle='--',marker='^',label="y1=sin(3*x1)/x1")#linestyle設(shè)置線的風(fēng)格,marker設(shè)置點(diǎn)的風(fēng)格 plt.plot(x,y2,c='r',linestyle='-.',label="y2=sin(2*x)/x") plt.plot(x,y3,c='g',label="y3=sin(x)/x") plt.legend() plt.show()

結(jié)果展示:


3、餅圖

餅圖是一種經(jīng)常被人們避免使用的圖表,因?yàn)槿搜蹖?duì)面積的辨識(shí)度沒有像對(duì)高度那樣那么高,所以利用面積去反映數(shù)據(jù)起不到很好的作用。但是,存在即合理,當(dāng)我們想要去強(qiáng)調(diào)某個(gè)部分占整體的比重時(shí),用餅圖是再適合不過了。

餅圖用于表示不同分類的占比情況,通過弧度大小來(lái)對(duì)比各種分類。餅圖將一個(gè)圓餅按照分類的占比劃分成多個(gè)區(qū)塊,整個(gè)圓餅代表數(shù)據(jù)的總量,每個(gè)區(qū)塊(圓弧)表示該分類占總體的比例大小。

API:

pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, *, data=None)

參數(shù):

x:指定繪圖的數(shù)據(jù);explode:指定餅圖某些部分的突出顯示,即呈現(xiàn)爆炸式;labels:為餅圖添加標(biāo)簽說(shuō)明,類似于圖例說(shuō)明;colors:指定餅圖的填充色;autopct:自動(dòng)添加百分比顯示,可以采用格式化的方法顯示;pctdistance:設(shè)置百分比標(biāo)簽與圓心的距離;shadow:是否添加餅圖的陰影效果;labeldistance:設(shè)置各扇形標(biāo)簽(圖例)與圓心的距離;startangle:設(shè)置餅圖的初始擺放角度;radius:設(shè)置餅圖的半徑大小;counterclock:是否讓餅圖按逆時(shí)針順序呈現(xiàn);wedgeprops:設(shè)置餅圖內(nèi)外邊界的屬性,如邊界線的粗細(xì)、顏色等;textprops:設(shè)置餅圖中文本的屬性,如字體大小、顏色等;center:指定餅圖的中心點(diǎn)位置,默認(rèn)為原點(diǎn)frame:是否要顯示餅圖背后的圖框,如果設(shè)置為True的話,需要同時(shí)控制圖框x軸、y軸的范圍和餅圖的中心位置;

示例:

import matplotlib.pyplot as pltlabels = 'A', 'B', 'C', 'D' fracs = [15, 30.55, 44.44, 10] color = 'blue','red','yellow','green' explode = [0, 0.1, 0, 0] # 0.1 凸出這部分, plt.pie(x=fracs,explode=explode, # 突出分裂的部分labels=labels, # 添加分類標(biāo)簽colors=color, # 設(shè)置餅圖的自定義填充色autopct='%.1f%%', # 設(shè)置百分比的格式,這里保留一位小數(shù)pctdistance=0.6, # 設(shè)置百分比標(biāo)簽與圓心的距離labeldistance = 1.15, # 設(shè)置各標(biāo)簽與圓心的距離startangle = 180, # 設(shè)置餅圖的初始角度radius = 1, # 設(shè)置餅圖的半徑counterclock = False, # 是否逆時(shí)針,這里設(shè)置為順時(shí)針方向wedgeprops = {'linewidth': 1.3, 'edgecolor':'green'},# 設(shè)置餅圖內(nèi)外邊界的屬性值textprops = {'fontsize':15, 'color':'k'}, # 設(shè)置文本標(biāo)簽的屬性值center = (0.5,0.5), # 設(shè)置餅圖的原點(diǎn)frame = 0 )# 是否顯示餅圖的圖框,這里設(shè)置顯示 plt.show()

結(jié)果展示:


4、散點(diǎn)圖

散點(diǎn)圖在回歸分析中的使用較多,他將序列顯示為一組點(diǎn)。值點(diǎn)在圖標(biāo)表中的位置表示,類別由圖表中的不同標(biāo)記表示,所以散點(diǎn)圖通常用于比較跨類別的聚合數(shù)據(jù)。

散點(diǎn)圖正是用來(lái)尋找數(shù)據(jù)集維度間的相互關(guān)系的。如果數(shù)據(jù)集規(guī)模足夠大并且維度間可能并不存在關(guān)系,我們依然可以通過散點(diǎn)圖來(lái)總結(jié)數(shù)據(jù)點(diǎn)的分布模式,得到有用的信息。

API:

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)

常用參數(shù)解釋:

x,y:表示即將繪制散點(diǎn)圖的數(shù)據(jù)點(diǎn) s:是一個(gè)可選的參數(shù)。 c:表示的是顏色,也是一個(gè)可選項(xiàng)。 marker:表示的是標(biāo)記的樣式,默認(rèn)的是'o'。 alpha:實(shí)數(shù),0-1之間。

示例:

#導(dǎo)入必要的模塊 import numpy as np import matplotlib.pyplot as plt #產(chǎn)生測(cè)試數(shù)據(jù) x = np.arange(1,10) y = x fig = plt.figure() ax1 = fig.add_subplot(111) #設(shè)置標(biāo)題 ax1.set_title('Scatter Plot') #設(shè)置X軸標(biāo)簽 plt.xlabel('X') #設(shè)置Y軸標(biāo)簽 plt.ylabel('Y') #畫散點(diǎn)圖 ax1.scatter(x,y,c = 'r',marker = 'o') #設(shè)置圖標(biāo) plt.legend('x1') #顯示所畫的圖 plt.show()

結(jié)果展示:


5、氣泡圖/云圖

氣泡圖是二維圖表展示三維(或者四維)數(shù)據(jù)集的典范,通常被看做散點(diǎn)圖的變種。它利用點(diǎn)的面積來(lái)表示第三維的數(shù)值。但是,前面提到過,人眼對(duì)面積的辨識(shí)度并不高,所以氣泡圖只能用于對(duì)第三維的展現(xiàn)不做精確要求的場(chǎng)景。

示例:

import numpy as np import matplotlib.pyplot as pltx=np.random.rand(50) y=np.random.rand(50) colors=np.random.rand(50) #顏色隨機(jī) area=(50*np.random.rand(50))**2 #散點(diǎn)的大小隨機(jī) fig=plt.figure(figsize=(10,5))plt.subplot(1,1,1) plt.scatter(x,y,s=area,marker="o",c=colors) #設(shè)置標(biāo)題 plt.title("plot of scatter for x to y",fontdict={'fontsize':20,'color':'blue'},loc='center') # 設(shè)置x軸和y軸的軸標(biāo)題 plt.xlabel("x for x in range(50)",fontdict={'fontsize':10,'color':'blue'}) plt.ylabel("y for y in range(50)",fontdict={'fontsize':10,'color':'blue'}) # 添加圖例 # plt.legend('xfory') # 添加數(shù)字標(biāo)簽 for a,b in zip(x,y):plt.text(round(a,2),round(b,2),round(b,2),ha="center",va='top',fontdict={'fontsize':7,'color':'black'}) plt.xlim(0,1) #x軸的坐標(biāo)軸取值范圍 # 給坐標(biāo)A添加標(biāo)注A(x10,y10) plt.annotate("A(x,y)",xy=(x[10],y[10]),fontsize=15) plt.show()

結(jié)果展示:


6、直方圖

直方圖又稱質(zhì)量分布圖,是一種統(tǒng)計(jì)報(bào)告圖。它由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況,一般用橫軸表示數(shù)據(jù)類型,用縱軸表示分布情況。

API:

hist(x, bins=None, range=None, density=None, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False)

參數(shù):

x:指定要繪制直方圖的數(shù)據(jù);bins:指定直方圖條形的個(gè)數(shù);range:指定直方圖數(shù)據(jù)的上下界,默認(rèn)包含繪圖數(shù)據(jù)的最大值和最小值;normed:是否將直方圖的頻數(shù)轉(zhuǎn)換成頻率;weights:該參數(shù)可為每一個(gè)數(shù)據(jù)點(diǎn)設(shè)置權(quán)重;cumulative:是否需要計(jì)算累計(jì)頻數(shù)或頻率;bottom:可以為直方圖的每個(gè)條形添加基準(zhǔn)線,默認(rèn)為0;histtype:指定直方圖的類型,默認(rèn)為bar,除此還有’barstacked’,‘step’, ‘stepfilled’;align:設(shè)置條形邊界值的對(duì)其方式,默認(rèn)為mid,除此還有’left’和’right’;orientation:設(shè)置直方圖的擺放方向,默認(rèn)為垂直方向;rwidth:設(shè)置直方圖條形寬度的百分比;log:是否需要對(duì)繪圖數(shù)據(jù)進(jìn)行l(wèi)og變換;color:設(shè)置直方圖的填充色;label:設(shè)置直方圖的標(biāo)簽,可通過legend展示其圖例;stacked:當(dāng)有多個(gè)數(shù)據(jù)時(shí),是否需要將直方圖呈堆疊擺放,默認(rèn)水平擺放;

示例:

#電影時(shí)長(zhǎng)分布分析(直方圖) import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties import matplotlibplt.rcParams['font.sans-serif'] = ['KaiTi'] # 顯示中文 x = [194,110,109,104,48,60,127,41,196,74,116,123,169,60,86,87,60,60,60,105,60,112,60,120,60,60,60,238,128,7,280,180,87,122,18,60,60,60,12,92,60,127,115,60,121,115,60,60,60,119]plt.figure() plt.hist(x,50,histtype='bar',label='電影時(shí)長(zhǎng)',facecolor='red',alpha=0.75) plt.title('電影時(shí)長(zhǎng)分布分析') plt.legend() plt.show()

結(jié)果展示:


7、雷達(dá)圖

雷達(dá)圖可以用來(lái)表示多維(四維以上)的數(shù)據(jù)集,并且數(shù)據(jù)集的每個(gè)維度都必須是可以排序的。但它所能承載的數(shù)據(jù)點(diǎn)是非常有限的,當(dāng)數(shù)據(jù)點(diǎn)過多時(shí),并不利用數(shù)據(jù)點(diǎn)之間的比較。

示例:

import numpy as np import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['KaiTi'] # 顯示中文 results = [{"大學(xué)英語(yǔ)": 87, "高等數(shù)學(xué)": 79, "體育": 95, "計(jì)算機(jī)基礎(chǔ)": 92, "程序設(shè)計(jì)": 85},{"大學(xué)英語(yǔ)": 80, "高等數(shù)學(xué)": 90, "體育": 91, "計(jì)算機(jī)基礎(chǔ)": 85, "程序設(shè)計(jì)": 88}] data_length = len(results[0]) # 將極坐標(biāo)根據(jù)數(shù)據(jù)長(zhǎng)度進(jìn)行等分 angles = np.linspace(0, 2*np.pi, data_length, endpoint=False) labels = [key for key in results[0].keys()] score = [[v for v in result.values()] for result in results] #為了使雷達(dá)圖一圈封閉起來(lái),需要下面的步驟 # 使雷達(dá)圖數(shù)據(jù)封閉 score_a = np.concatenate((score[0], [score[0][0]])) score_b = np.concatenate((score[1], [score[1][0]])) angles = np.concatenate((angles, [angles[0]])) labels = np.concatenate((labels, [labels[0]])) # 設(shè)置圖形的大小 fig = plt.figure(figsize=(8, 6), dpi=100) # 新建一個(gè)子圖 這里一定要設(shè)置為極坐標(biāo)格式 ax = plt.subplot(111, polar=True) # 繪制折線圖 /繪制雷達(dá)圖 ax.plot(angles, score_a, color='g') ax.plot(angles, score_b, color='b') # 添加每個(gè)特征的標(biāo)簽 ax.set_thetagrids(angles*180/np.pi, labels) # 設(shè)置雷達(dá)圖的0度起始位置 ax.set_theta_zero_location('N') # 設(shè)置雷達(dá)圖的坐標(biāo)刻度范圍 ax.set_rlim(0, 100) # 設(shè)置雷達(dá)圖的坐標(biāo)值顯示角度,相對(duì)于起始角度的偏移量 ax.set_rlabel_position(270) ax.set_title("成績(jī)情況分析") plt.legend(["小明", "小紅"], loc='best') plt.show()

結(jié)果展示:

總結(jié)

以上是生活随笔為你收集整理的学习笔记——matplotlib学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。