數(shù)據(jù)可視化 課件 蔣國銀 1.1 可視化簡介-7.2 統(tǒng)計圖(直角坐標(biāo)系)_第1頁
數(shù)據(jù)可視化 課件 蔣國銀 1.1 可視化簡介-7.2 統(tǒng)計圖(直角坐標(biāo)系)_第2頁
數(shù)據(jù)可視化 課件 蔣國銀 1.1 可視化簡介-7.2 統(tǒng)計圖(直角坐標(biāo)系)_第3頁
數(shù)據(jù)可視化 課件 蔣國銀 1.1 可視化簡介-7.2 統(tǒng)計圖(直角坐標(biāo)系)_第4頁
數(shù)據(jù)可視化 課件 蔣國銀 1.1 可視化簡介-7.2 統(tǒng)計圖(直角坐標(biāo)系)_第5頁
已閱讀5頁,還剩501頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

數(shù)據(jù)可視化1第一章Matplotlib的基本使用第二章Matplotlib的進(jìn)階使用第三章…第四章目錄Contents…第五章數(shù)據(jù)可視化概述2第一章數(shù)據(jù)可視化概述1234可視化簡介數(shù)據(jù)可視化簡介數(shù)據(jù)可視化的研發(fā)數(shù)據(jù)可視化的開發(fā)工具3可視化簡介1.41可視化的意義

通常,人類通過視覺執(zhí)行高效搜索的過程只能保持幾分鐘,并且信息越豐富,越容易耗費大量的注意力。

通過可視化手段可以保存待處理信息,彌補人腦有限記憶的不足,同時也能吸引關(guān)注,高效傳遞信息。51可視化的功能1.信息記錄與保存圖形圖像形式更多樣,內(nèi)容更豐富,能夠更詳細(xì)地記錄信息2.信息推理與分析可視化能擴充人腦記憶,幫助人腦形象地理解和分析任務(wù),顯著提升信息分析的效率3.信息傳播與擴散“百聞不如一見”“一圖勝千言”61可視化的分類71可視化的發(fā)展史8數(shù)據(jù)可視化簡介2.92數(shù)據(jù)可視化的意義

相比于包含歷史記錄、標(biāo)記等的傳統(tǒng)可視化,數(shù)據(jù)可視化重點關(guān)注數(shù)據(jù)科學(xué)和數(shù)據(jù)分析

。

數(shù)據(jù)可視化借助人類的視覺感知與認(rèn)知能力,可以有效地傳達(dá)豐富的、極易被隱藏的信息,對人類分析數(shù)據(jù)和解決實際問題起到輔助作用。102數(shù)據(jù)可視化的意義1.觀測與跟蹤數(shù)據(jù)數(shù)據(jù)可視化能進(jìn)行歷史數(shù)據(jù)、平面數(shù)據(jù)進(jìn)行跟蹤2.分析數(shù)據(jù)提高用戶分析數(shù)據(jù)和獲取信息的效率3.輔助理解數(shù)據(jù)4.增強數(shù)據(jù)吸引力112數(shù)據(jù)可視化的分類12數(shù)據(jù)可視化的研發(fā)3.133數(shù)據(jù)可視化的研發(fā)學(xué)術(shù)機構(gòu)業(yè)界機構(gòu)143數(shù)據(jù)可視化的研發(fā)——應(yīng)用領(lǐng)域153數(shù)據(jù)可視化的研發(fā)挑戰(zhàn)1.數(shù)據(jù)挑戰(zhàn)2.算力挑戰(zhàn)3.算法挑戰(zhàn)4.認(rèn)知挑戰(zhàn)16數(shù)據(jù)可視化的開發(fā)工具4.174數(shù)據(jù)可視化的開發(fā)工具——常用工具184數(shù)據(jù)可視化的開發(fā)工具——Python的數(shù)據(jù)可視化庫1920數(shù)據(jù)可視化第一章Matplotlib的基本使用第二章Matplotlib的進(jìn)階使用第三章…第四章目錄Contents…第五章緒論21第二章Matplotlib的基本使用12345引言安裝方法圖形組成元素基本設(shè)置基本圖形22引言1.231引言Matplotlib是Python最著名的繪圖庫之一,它的pyplot子庫提供了一整套和MATLAB相似的繪圖API,方便用戶快速繪制2D圖表,包括直方圖、餅圖、散點圖等。/241引言直方圖251引言餅圖261引言散點圖271引言同時,Matplotlib為利用通用的圖形用戶界面工具包,如Tkinter,wxPython,Qt或GTK+向應(yīng)用程序嵌入式繪圖提供了各種API。此外,很多其他的優(yōu)秀的可視化庫,如后續(xù)我們會學(xué)到的seaborn,以及ggplot和plotnine都是以Matplotlib為底層實現(xiàn)的。28安裝方法2.292安裝方法

Linux打開Terminal窗口,輸入以下內(nèi)容:$sudoapt-getinstallpython3-matplotlib

MacOS打開Terminal窗口,輸入以下內(nèi)容:$pip3installmatplotlib

Windows打開AnacondaPromt窗口,輸入以下內(nèi)容:pipinstallmatplotlib302安裝方法31圖形組成元素3.323圖形組成元素333圖形組成元素在認(rèn)識了這些組成元素后,我們就可以用matplotlib簡單的繪制一個圖形了。343圖形組成元素353圖形組成元素36基本設(shè)置4.374基本設(shè)置384基本設(shè)置——標(biāo)題的設(shè)置在matplotlib中通過title()添加標(biāo)題??梢酝ㄟ^help(plt.title)查看plt.title()的參數(shù)設(shè)置394基本設(shè)置——標(biāo)題的設(shè)置?label:標(biāo)題的名稱?fontdict:包含一系列對標(biāo)題字體的設(shè)置。具體如下:?

fontsize:設(shè)置字體大小,可選參數(shù)['xx-small','x-small','small’, 'medium','large','x-large','xx-large'];?

fontweight:設(shè)置字體粗細(xì),可選參數(shù)['light','normal','medium’, 'semibold','bold','heavy','black’];?verticalalinement:設(shè)置水平對齊方式,可選參數(shù):

['center'

,

'top'

,

'bottom'

,'baseline'];

?

horizontalalignment:設(shè)置垂直對齊方式,可選參數(shù):['left','right’,

'center’]。?loc:標(biāo)題水平樣式,可選參數(shù):['center','left','right'],默認(rèn)為居中。?pad:

標(biāo)題離圖表頂部的距離,默認(rèn)為None。?kwargs:

可以設(shè)置一些其他的文本屬性。404基本設(shè)置——標(biāo)題的設(shè)置添加標(biāo)題414基本設(shè)置——標(biāo)題的設(shè)置修改標(biāo)題字體424基本設(shè)置——標(biāo)題的設(shè)置修改標(biāo)題位置434基本設(shè)置——標(biāo)記點的設(shè)置當(dāng)點的個數(shù)比較少的時候,曲線實際上沒有平滑的很好,這時就可以看到圖形中的拐點??梢酝ㄟ^pyplot.plot中的marker參數(shù)自定義設(shè)置標(biāo)記點的樣式。444基本設(shè)置——標(biāo)記點的設(shè)置Marker常用參數(shù)及含義454基本設(shè)置——標(biāo)記點的設(shè)置464基本設(shè)置——網(wǎng)格線的設(shè)置在matplotlib中通過grid()添加網(wǎng)格線??梢酝ㄟ^help(plt.grid)查看plt.grid()的參數(shù)設(shè)置474基本設(shè)置——網(wǎng)格線的設(shè)置?b:布爾值,用來控制是否顯示網(wǎng)格。如果在grid()中設(shè)置為False,但又設(shè)置了其他參數(shù),如顏色和寬度,則False失效。?which:可選參數(shù):['major','minor','both']。當(dāng)輸入為'minor'時網(wǎng)格為白色。?axis:可選參數(shù):['x','y','both']。若輸入的是'x',則會隱藏平行x軸的網(wǎng)格線。?kwargs:

可以設(shè)置一些其他的屬性。如線的樣式、顏色、寬度等。具體參數(shù)會在后續(xù)提到484基本設(shè)置——網(wǎng)格線的設(shè)置494基本設(shè)置——網(wǎng)格線的設(shè)置50基本圖形5.515基本圖形市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小525基本圖形——折線圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小折現(xiàn)圖的實現(xiàn)其實就是通過pyplot.plot()實現(xiàn)的。plot()函數(shù)的本質(zhì)就是根據(jù)點連接線。根據(jù)x(數(shù)組或者列表)和y(數(shù)組或者列表)組成點,然后連接成線,也就是折現(xiàn)圖了。535基本圖形——折線圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小plot()語法如下545基本圖形——折線圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小實際使用過程中用到的參數(shù)其實并不是通過help(pyplot.plot)列舉出來的這幾個。具體常用參數(shù)有:?x,y:輸入的x和y的值,需要以列表形式輸入。其中x是可選參數(shù),若沒有,將默認(rèn)為[0,n-1],也就是y的索引值。?fmt:定義線條顏色、標(biāo)記點和線條樣式的參數(shù)。這是一個快速設(shè)置的方式,如’ro:’意思是線條顏色為紅色(r為red的縮寫),標(biāo)記點樣式是實心圓(也就是o),線條的樣式是虛線。?kwargs:其他的屬性。包括但不僅包括alpha(透明度)、drawstyle(點連接方式)、linestyle(線條樣式)、linewidth(線條寬度)、color(線條顏色)。其中alpha的取值范圍為[0,1];drawstyle可選參數(shù)有['steps','steps-pre','steps-mid','steps-post']。555基本圖形——折線圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小其中線條樣式有:565基本圖形——折線圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小575基本圖形——折線圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小585基本圖形——柱形圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小柱形圖是在對數(shù)據(jù)可視化過程中非常常見的一個圖表。主要應(yīng)用于定性數(shù)據(jù)的可視化場景中,或用于展示離散數(shù)據(jù)的分布情況,如:不同城市同一職位人數(shù)分布、出國旅游人士的職業(yè)分布等。在matplotlib中通過pyplot.bar()創(chuàng)建。595基本圖形——柱形圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小bar()語法如下:605基本圖形——柱形圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小常用參數(shù)有:?x:x軸的位置序列,一般采用arange函數(shù)產(chǎn)生一個序列。?height:y軸的數(shù)值序列,也就是柱形圖的高度,一般就是我們需要展示的數(shù)據(jù)。?width:柱形圖的寬度。?bottom:y軸的起始位置。?hatch:填充柱形的樣式??蛇x參數(shù)有['|','/','-','\','*'],同一符號出現(xiàn)的次數(shù)越多,形成的線條越密集。?align:條形的中心位置。可選參數(shù)有['center','edge‘]。?tick_label:下標(biāo)的標(biāo)簽。?log:y軸是否用科學(xué)計算法表示。?facecolor:柱形的顏色。?edgecolor:柱形外邊框顏色。615基本圖形——柱形圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小625基本圖形——柱形圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小635基本圖形——柱形圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小645基本圖形——條形圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小柱形圖中的柱體變成水平方向,柱形圖就成了條形圖在matplotlib中通過pyplot.barh()繪制條形圖。655基本圖形——條形圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小barh語法如下:665基本圖形——條形圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小barh()和bar()參數(shù)基本一致。唯一的區(qū)別在于:在bar()函數(shù)中,width這一參數(shù)代表的是柱子的寬度(胖瘦),而在barh()函數(shù)中width這一參數(shù)代表的是橫向柱子的長度(長短)675基本圖形——條形圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小685基本圖形——條形圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小還可以通過調(diào)整bar()中的參數(shù)繪制出條形圖需要把:orientation="horizontal",然后x,與y的數(shù)據(jù)交換,再添加bottom=x,即可。695基本圖形——條形圖市場開拓目標(biāo)單擊此處可編輯內(nèi)容,根據(jù)您的需要自由拉伸文本框大小705基本圖形——直方圖直方圖是用來展示連續(xù)性數(shù)據(jù)分布特征的圖形。主要應(yīng)用于定量數(shù)據(jù)的可視化場景中,如:居民可支配收入、考試成績區(qū)間分布等。在matplotlib中,通過pyplot.hist()繪制直方圖。715基本圖形——直方圖hist()語法如下:725基本圖形——直方圖市場開拓目標(biāo)常用參數(shù)有:?x:數(shù)據(jù)集,最終的直方圖將對數(shù)據(jù)集進(jìn)行統(tǒng)計。?bins:統(tǒng)計的區(qū)間分布。?range:tuple,顯示的區(qū)間。?density:bool,默認(rèn)為false,顯示的是頻數(shù)統(tǒng)計結(jié)果,為True則顯示頻率統(tǒng)計結(jié)果,這里需要注意,頻率統(tǒng)計結(jié)果=區(qū)間數(shù)目/(總數(shù)*區(qū)間寬度),和normed效果一致,官方推薦使用density。?histtype:可選參數(shù)為['bar','barstacked','step','stepfilled'],默認(rèn)為bar,推薦使用默認(rèn)配置,step使用的是梯狀,stepfilled則會對梯狀內(nèi)部進(jìn)行填充,效果與bar類似。?stacked:bool,默認(rèn)為False,是否為堆積狀圖。735基本圖形——直方圖市場開拓目標(biāo)745基本圖形——直方圖755基本圖形——餅圖餅圖主要應(yīng)用在定性數(shù)據(jù)的可視化場景中,或是用來進(jìn)行離散型數(shù)據(jù)的比例展示。通過繪制餅圖,可以十分直觀的反映所研究對象的比例分布情況。在matplotlib中,通過pyplot.pie()繪制餅圖。765基本圖形——餅圖pie()語法如下:775基本圖形——餅圖?x:數(shù)據(jù)集,數(shù)據(jù)類型為列表。?explode:突出的部分,數(shù)據(jù)類型為列表。?labels:標(biāo)簽,數(shù)據(jù)類型為列表。?colors:每個區(qū)域的顏色,數(shù)據(jù)類型為列表。?autopct:每個區(qū)域的百分比標(biāo)簽展示,如“%0.1f%%”為保留一位小數(shù)。?pctdistance:百分比標(biāo)簽到圓心的距離,取值范圍為[0,1],默認(rèn)為0.6。?labeldistance:標(biāo)簽到圓心的距離,默認(rèn)為1.1。?startangle:開始繪圖的角度。以正右方為0°,startangle為正則逆時針旋轉(zhuǎn),為負(fù)則順時針旋轉(zhuǎn)。?shadow:是否顯示陰影。?radius:圓的半徑,默認(rèn)為1。?counterclock:布爾值,可選參數(shù),默認(rèn)為None。指定指針方向,若為

False,則順時針繪制常用參數(shù)有:785基本圖形——餅圖795基本圖形——餅圖還可以修改起始角度805基本圖形——散點圖散點圖也是非常常見的一種圖標(biāo)類型。繪制出離散點的分布,當(dāng)離散點數(shù)量十分多的時候,甚至可以看出離散點分布的趨勢。在matplotlib中通過pyplot.scatter()繪制散點圖。815基本圖形——散點圖市場開拓目標(biāo)scatter()語法如下:825基本圖形——散點圖?x,y:表示的是shape大小為(n,)的數(shù)組,也就是我們即將繪制散點圖的數(shù)據(jù)點。?s:表示的是大小,是一個標(biāo)量或者是一個shape大小為(n,)的數(shù)組,可選,默認(rèn)20。?c:表示的是色彩或顏色序列,可選,默認(rèn)藍(lán)色‘b’。但是c不應(yīng)該是一個單一的RGB數(shù)字,也不應(yīng)該是一個RGBA的序列,因為不便區(qū)分。c可以是一個RGB或RGBA二維行數(shù)組。?cmap:Colormap,標(biāo)量或者是一個colormap的名字,cmap僅僅當(dāng)c是一個浮點數(shù)數(shù)組的時候才使用。如果沒有申明就是image.cmap,可選,默認(rèn)None。?norm:Normalize,數(shù)據(jù)亮度在0-1之間,也是只有c是一個浮點數(shù)的數(shù)組的時候才使用。如果沒有申明,就是默認(rèn)None。?vmin,vmax:標(biāo)量,當(dāng)norm存在的時候忽略。用來進(jìn)行亮度數(shù)據(jù)的歸一化,可選,默認(rèn)None常用參數(shù)有:835基本圖形——散點圖845基本圖形——散點圖若想比較三維數(shù)據(jù),可以通過調(diào)整散點大小來實現(xiàn)該目的855基本圖形——箱型圖箱型圖常用于反映一組數(shù)據(jù)的分布特征,如:分布是否對稱,是否存在離群點等。主要應(yīng)用于一系列測量或觀測數(shù)據(jù)的比較場景中,如:班級測試成績的比較、產(chǎn)品優(yōu)化前后測試數(shù)據(jù)比較等。在matplotlib中通過pyplot.boxplot()繪制865基本圖形——箱型圖boxplot()語法如下:875基本圖形——箱型圖常用參數(shù)有:?x:指定要繪制箱線圖的數(shù)據(jù)。?notch:是否是凹口的形式展現(xiàn)箱線圖,默認(rèn)非凹口。?sym:指定異常點的形狀,默認(rèn)為+號顯示。?vert:是否需要將箱線圖垂直擺放,默認(rèn)垂直擺放。?whis:指定上下須與上下四分位的距離,默認(rèn)為1.5倍的四分位差。?positions:指定箱線圖的位置,默認(rèn)為[0,1,2…]。?widths:指定箱線圖的寬度,默認(rèn)為0.5。?patch_artist:是否填充箱體的顏色。?meanline:是否用線的形式表示均值,默認(rèn)用點來表示。?showmeans:是否顯示均值,默認(rèn)不顯示。?showcaps:是否顯示箱線圖頂端和末端的兩條線,默認(rèn)顯示。?showbox:是否顯示箱線圖的箱體,默認(rèn)顯示。?showfliers:是否顯示異常值,默認(rèn)顯示。?boxprops:設(shè)置箱體的屬性,如邊框色,填充色等。?labels:為箱線圖添加標(biāo)簽,類似于圖例的作用。?filerprops:設(shè)置異常值的屬性,如異常點的形狀、大小、填充色等。?medianprops:設(shè)置中位數(shù)的屬性,如線的類型、粗細(xì)等。?meanprops:設(shè)置均值的屬性,如點的大小、顏色等。?capprops:設(shè)置箱線圖頂端和末端線條的屬性,如顏色、粗細(xì)等。?whiskerprops:設(shè)置須的屬性,如顏色、粗細(xì)、線的類型等。885基本圖形——箱型圖895基本圖形——棉棒圖棉棒圖主要用來顯示一個包含正負(fù)的數(shù)據(jù)集,如在地震勘探中表示地層間反射系數(shù)等。在matplotlib中通過pyplot.stem()繪制。905基本圖形——棉棒圖stem()語法如下:915基本圖形——棉棒圖常用參數(shù)有:?x:制定棉棒的x軸基線上的位置?y:繪制棉棒的長度?linefmt:棉棒的樣式?markerfmt:棉棒末端的樣式?basefmt:指定基線的樣式?bottom:設(shè)置y軸的起始位置,默認(rèn)為0925基本圖形——棉棒圖935基本圖形——誤差線圖在對總體參數(shù)進(jìn)行估計時,會出現(xiàn)參數(shù)估計值波動的情況。這時就需要用誤差置信區(qū)間來表示可信范圍,誤差線就很完美的充當(dāng)了這個展示置信區(qū)間的角色。在matplotlib中通過pyplot.errorbar()繪制誤差線圖。945基本圖形——誤差線圖errorbar()語法如下:955基本圖形——誤差線圖常用參數(shù)有:?x,y:數(shù)據(jù)點的位置坐標(biāo)?xerr,yerr:數(shù)據(jù)的誤差范圍?fmt:數(shù)據(jù)點的標(biāo)記樣式以及相互之間連接線樣式?ecolor:誤差棒的線條顏色?elinewidth:誤差棒的線條粗細(xì)?capsize:誤差棒邊界橫杠的大小?capthick:誤差棒邊界橫杠的厚度?ms:數(shù)據(jù)點的大小?mfc:數(shù)據(jù)點的顏色?mec:數(shù)據(jù)點邊緣的顏色965基本圖形——誤差線圖975基本圖形——極線圖極線圖是在極坐標(biāo)系上繪出的一種圖。在極坐標(biāo)系中,要確定一個點,需要指明這個點距原點的角度和半徑。將這些點連在一起,就構(gòu)成了極線圖。通過pyplot.polar()可以繪制極線圖。985基本圖形——極線圖polar()語法如下:995基本圖形——極線圖部分參數(shù)在polar()中如‘marker’、‘mc’、‘mfc’等是通用的100101數(shù)據(jù)可視化第一章Matplotlib的基本使用第二章Matplotlib的進(jìn)階使用第三章…第四章目錄Contents…第五章緒論102第三章Matplotlib的進(jìn)階使用進(jìn)階設(shè)置進(jìn)階圖形1234引言擴充功能103引言1.1041引言上一章講述了使用Matplotlib繪制基本圖形的方法,幫助用戶掌握了一些常見圖形的函數(shù)使用以及其參數(shù)含義。但是,這樣的簡單圖形顯然不能滿足用戶更復(fù)雜的實際需求。本章重點講解如何對Matplotlib圖形進(jìn)行更復(fù)雜的設(shè)置,以及如何繪制更復(fù)雜和完善的圖形,使用戶能夠更美觀、更全面、更靈活地展示數(shù)據(jù),真正做到用數(shù)據(jù)講故事。105進(jìn)階設(shè)置2.1062進(jìn)階設(shè)置1072進(jìn)階設(shè)置——rc參數(shù)的設(shè)置在添加標(biāo)題的過程中,如果標(biāo)題為中文,會存在不顯示的問題1082進(jìn)階設(shè)置——rc參數(shù)的設(shè)置

解決辦法是添加以下兩行命令1092進(jìn)階設(shè)置——rc參數(shù)的設(shè)置這就涉及到了rc參數(shù)的相關(guān)問題。實際上,matplotlib使用matplotlibrc(matplotlibresourceconfigurations)配置文件來自定義各種屬性,我們稱之為rc配置或者rc參數(shù)。通過rc參數(shù)可以修改默認(rèn)的屬性,包括窗體大小、每英寸的點數(shù)、線條寬度、顏色、樣式、坐標(biāo)軸、坐標(biāo)和網(wǎng)絡(luò)屬性、文本、字體等。1102進(jìn)階設(shè)置——rc參數(shù)的設(shè)置lines:設(shè)置線條屬性。包括線條顏色、寬度和標(biāo)記等。patch:填充2D空間的圖形對象。font:字體類別、風(fēng)格、粗細(xì)和大小等。text:文本顏色等。axes:坐標(biāo)軸的背景顏色、邊緣顏色,刻度線的大小,刻度標(biāo)簽大小等。xtick、ytick:x軸和y軸刻度線大小、寬度,刻度線顏色、標(biāo)簽大小等。grid:網(wǎng)格顏色、線條設(shè)置、透明度等。legend:圖例的文本大小,線框風(fēng)格等。figure:畫布標(biāo)題大小、粗細(xì),畫布分辨率等。savefig:保存畫布圖像的分辨率、背景顏色等。配置文件matplotlibrc主要包括以下配置要素:1112進(jìn)階設(shè)置——rc參數(shù)的設(shè)置可以通過以下代碼代碼查看這些參數(shù)的默認(rèn)值1122進(jìn)階設(shè)置——rc參數(shù)的設(shè)置還可以直接查找rc參數(shù)的源文件查看對應(yīng)默認(rèn)參數(shù)1132進(jìn)階設(shè)置——rc參數(shù)的設(shè)置這樣,就可以通過修改rc參數(shù)這種方式直接修改函數(shù)曲線的顏色、粗細(xì)等1142進(jìn)階設(shè)置——rc參數(shù)的設(shè)置回歸到最初解決中文顯示的問題上,除了“SimHei”,還有以下字體與其對應(yīng)的參數(shù)1152進(jìn)階設(shè)置——坐標(biāo)軸的設(shè)置在正常顯示中文標(biāo)題后,我們就可以開始對圖形進(jìn)行美化了。讓我們先來學(xué)習(xí)坐標(biāo)軸設(shè)置的相關(guān)操作1162進(jìn)階設(shè)置——坐標(biāo)軸的設(shè)置坐標(biāo)軸顏色設(shè)置坐標(biāo)軸顏色設(shè)置思路如下:獲取坐標(biāo)軸修改顏色1172進(jìn)階設(shè)置——坐標(biāo)軸的設(shè)置當(dāng)前的圖表和子圖可以使用plt.gcf()和plt.gca()獲得,分別代表GetCurrentFigure和GetCurrentAxes。實際上,在pyplot模塊中,許多函數(shù)都是對當(dāng)前Figure或Axes對象進(jìn)行操作的。坐標(biāo)軸顏色設(shè)置1182進(jìn)階設(shè)置——坐標(biāo)軸的設(shè)置既然可以改變顏色,也可以通過設(shè)置坐標(biāo)軸顏色為白色,以達(dá)到“隱藏”坐標(biāo)軸的目的。坐標(biāo)軸顏色設(shè)置1192進(jìn)階設(shè)置——坐標(biāo)軸的設(shè)置雖然設(shè)置成“white”和“none”看起來都可以達(dá)到“隱藏”坐標(biāo)軸的目的。但二者也存在一定區(qū)別。當(dāng)figure顏色為黑色時,設(shè)置成“white”還是會顯示出來的,而設(shè)置成“none”還是不會顯示出來。坐標(biāo)軸顏色設(shè)置1202進(jìn)階設(shè)置——坐標(biāo)軸的設(shè)置坐標(biāo)軸刻度的設(shè)置若只想顯示一定范圍內(nèi)的圖形,可以通過xlim和ylim兩個函數(shù)來設(shè)置坐標(biāo)的顯示范圍,接收的參數(shù)為一個元組。1212進(jìn)階設(shè)置——坐標(biāo)軸的設(shè)置如果想修改坐標(biāo)軸刻度的值,可以通過xticks()和yticks()兩個函數(shù)來設(shè)置,接受的參數(shù)為一個列表。坐標(biāo)軸刻度的設(shè)置1222進(jìn)階設(shè)置——坐標(biāo)軸的設(shè)置我們也可以將坐標(biāo)軸刻度用文字來表示,只需要再加入一個列表即可。此時會在第一個列表中進(jìn)行坐標(biāo)軸刻度劃分,在第二個列表中找到所需要表達(dá)的文字坐標(biāo)軸刻度的設(shè)置1232進(jìn)階設(shè)置——坐標(biāo)軸的設(shè)置坐標(biāo)軸位置的設(shè)置數(shù)學(xué)中的x-y直角坐標(biāo)系,x軸與y軸相交于(0,0)點。在Matplotlib,也可以調(diào)整坐標(biāo)軸的位置,繪制出x-y直角坐標(biāo)系下的圖形。實現(xiàn)思路如下:(1)獲取坐標(biāo)軸。(2)設(shè)置右邊和上方坐標(biāo)軸顏色為none。(3)將左邊和下方的坐標(biāo)軸調(diào)至中心處。1242進(jìn)階設(shè)置——坐標(biāo)軸的設(shè)置坐標(biāo)軸位置的設(shè)置還可以通過設(shè)置左邊和下方的坐標(biāo)軸到0點達(dá)到同樣的效果1252進(jìn)階設(shè)置——坐標(biāo)軸的設(shè)置坐標(biāo)軸標(biāo)簽的設(shè)置如果想要給x軸或y軸添加名稱,則需要使用函數(shù)xlabel()和ylabel()。同樣可以通過fontsize調(diào)整字體大小,通過color設(shè)置字體顏色等1262進(jìn)階設(shè)置——圖例的設(shè)置在繪圖區(qū)域中可能會出現(xiàn)多個圖形,如果沒有圖例進(jìn)行區(qū)分,是很難識別出這些圖形的主要內(nèi)容的。因此,對于有兩條及兩條以上曲線的圖形,需要添加圖例進(jìn)行區(qū)分。在Matplotlib中,通過pyplot.legend()創(chuàng)建圖例,但是需要在繪圖過程中加上labels名稱,如plt.plot(x,y,labels='1')。1272進(jìn)階設(shè)置——圖例的設(shè)置pyplot.legend()常見參數(shù)如下:loc:int或str??蛇x參數(shù)見表3.1,可使用左側(cè)的字符串或者右側(cè)的整型代號。默認(rèn)為'best',同時,'best'意味會自行調(diào)節(jié)位置以不遮擋內(nèi)容,運行速度相對要慢。若使用了bbox_to_anchor,該項無效。fontsize:設(shè)置圖例字體大小。frameon:設(shè)置圖例的邊框,默認(rèn)為True,設(shè)置為False時不顯示。title:圖例的標(biāo)題。shadow:是否為圖例邊框添加陰影。markerfirst:True表示圖例標(biāo)簽在句柄右側(cè),false反之。markerscale:圖例標(biāo)記為原圖標(biāo)記中的多少倍大小。fancybox:是否將圖例框的邊角設(shè)為圓形。framealpha:控制圖例框的透明度。bbox_to_anchor:(橫向看右,縱向看下),如果要自定義圖例位置或者將圖例畫在坐標(biāo)外邊,使用到的參數(shù)一般配合著ax.get_position()等參數(shù)使用。1282進(jìn)階設(shè)置——參考線/區(qū)域的設(shè)置我們有時需要在圖形中添加參考線或參考區(qū)域,以對數(shù)據(jù)進(jìn)行比較。例如,在對營業(yè)收入進(jìn)行分析時,會用到帕累托分析,找出營業(yè)收入超過80%的點。1292進(jìn)階設(shè)置——參考線/區(qū)域的設(shè)置參考線的設(shè)置在Matplotlib中,通過pyplot.axhline()繪制平行于x軸的水平參考線,通過pyplot.axvline()繪制平行于y軸的垂直參考線。1302進(jìn)階設(shè)置——參考線/區(qū)域的設(shè)置y:水平參考線的出發(fā)點。xmin&xmax:x最小(最大)刻度所占百分比,取值范圍為[0,1]。如:設(shè)置xmin=0.5,即為參考線起始處到左坐標(biāo)軸的距離占50%。缺省時繪制平行于整個坐標(biāo)軸的參考線。c:參考線的顏色。ls:參考線的線條風(fēng)格。lw:參考線的寬度。其中axhline()常見參數(shù)如下:參考線的設(shè)置1312進(jìn)階設(shè)置——參考線/區(qū)域的設(shè)置axvline()和axhline()使用方法基本一致,唯一的區(qū)別在于axhline()繪制的是平行于x軸的參考線,axvline()繪制的是平行于y軸的參考線,因此在參數(shù)上由axhline()中的y,xmin和xmax對應(yīng)變成axvline()中的x,ymin和ymax。參考線的設(shè)置1322進(jìn)階設(shè)置——參考線/區(qū)域的設(shè)置參考線可以滿足一定的需求,但如果需要對整個區(qū)域進(jìn)行標(biāo)記的話,用參考線是不夠的,這時就要使用到參考區(qū)域。Matplotlib通過pyplot.axhspan()創(chuàng)建平行于x軸的參考區(qū)域;通過pyplot.axvspan()創(chuàng)建平行于y軸的參考區(qū)域。參考區(qū)域的設(shè)置1332進(jìn)階設(shè)置——參考線/區(qū)域的設(shè)置其中,axhspan()常見參數(shù)如下:xmin&xmax:區(qū)域的左、右坐標(biāo)對于整個圖表的位置,范圍在0到1之間。缺省時xmin取0,xmax取1。ymin&ymax:區(qū)域的上、下坐標(biāo)對于整個圖表的位置。同樣可以通過alpha參數(shù)調(diào)整透明度,通過facecolor調(diào)整區(qū)域顏色,通過edgecolor調(diào)整邊框顏色等參考區(qū)域的設(shè)置1342進(jìn)階設(shè)置——參考線/區(qū)域的設(shè)置與axhline()和axvline()類似,axvspan()和axhspan()的唯一區(qū)別在于axvspan()的ymin和ymax在缺省時分別為0和1。參考區(qū)域的設(shè)置需要注意的是,參考區(qū)域和參考線之間還是有區(qū)別的。例如,參考區(qū)域中必選參數(shù)如axhspan()中的ymin和ymax是實際的坐標(biāo)軸刻度值,范圍不屬于[0,1]。這是我們在繪圖過程中需要十分注意的。1352進(jìn)階設(shè)置——注釋文本的設(shè)置我們在圖形展示中經(jīng)常要展示一些特殊的點,并且要進(jìn)行標(biāo)記,這時就需要注釋文本了。在Matplotlib中,注釋文本有兩種方式:text()為無指向型注釋文本,annotate()為指向型注釋文本。1362進(jìn)階設(shè)置——注釋文本的設(shè)置無指向型注釋文本無指向型注釋文本,文如其名,是指沒有指向型的注釋。它通過pyplot.text()創(chuàng)建?;舅枷胧牵?.定位到需要注釋的位置2.添加注釋。1372進(jìn)階設(shè)置——注釋文本的設(shè)置無指向型注釋文本無指向型注釋文本常用參數(shù)如下:x,y:注釋開始的位置坐標(biāo)。string:表示說明文字。fontsize:表示字體大小。verticalalignment:垂直對齊方式,可選參數(shù)有:[‘center’,‘top’,‘bottom’,‘baseline’]。horizontalalignment:水平對齊方式,可選參數(shù)有:[‘center’,‘right’,‘left’]。wight:字體的粗細(xì),可選參數(shù)有:[‘normal’,‘bold’,‘bolder’,‘lighter’]。bbox:給字體添加框。以字典的形式,可以修改框內(nèi)的顏色、字體顏色、邊框顏色等。1382進(jìn)階設(shè)置——注釋文本的設(shè)置指向型注釋文本無指向型注釋文本對于只有一個圖形的說明性較好,若圖形中包含兩個及以上的函數(shù)曲線,那么指向型注釋文本的效果會更好。在matplotlib中通過pyplot.annotate()創(chuàng)建指向型注釋文本。實現(xiàn)思路是:1.定位被注釋的坐標(biāo)點2.定位注釋文本的坐標(biāo)點3.添加注釋。1392進(jìn)階設(shè)置——注釋文本的設(shè)置指向型注釋文本指向型注釋文本常用參數(shù)如下:s:為注釋文本內(nèi)容xy:為被注釋的坐標(biāo)點xytext:為注釋文字的坐標(biāo)位置arrowprops:設(shè)置指向箭頭的參數(shù),包含:arrowstyle:設(shè)置箭頭的樣式,可選參數(shù):['->','|-|','-|>','simple','fancy']等;connectionstyle:設(shè)置箭頭的形狀可選參數(shù)['arc3','arc','angle','angle3'];color:設(shè)置箭頭顏色。headlength:箭頭的長度。headwidth:箭頭的寬度。width:箭尾的寬度。若指定了arrowstyle,則不能通過這三個參數(shù)個性化設(shè)置箭頭。bbox:為注釋文本添加邊框。140進(jìn)階圖形3.1413進(jìn)階圖形1423進(jìn)階圖形——復(fù)雜柱形圖復(fù)雜柱形圖包括很多種,本章從并列柱形圖、堆積柱形圖、誤差棒柱形圖來講解復(fù)雜柱形圖的繪制思路、流程以及代碼實現(xiàn)。1433進(jìn)階圖形——復(fù)雜柱形圖并列柱形圖當(dāng)對多個樣本進(jìn)行某個因素的比較時,如對多個班級某次考試的語數(shù)英三門成績平均分進(jìn)行比較時,就可以用到并列柱形圖。繪制思路如下:(1)繪制第一個班級的語數(shù)英成績柱形圖;(2)間隔一定的距離繪制第二個班級的語數(shù)英成績柱形圖,以此類推;(3)補充x、y軸名稱,完善圖形1443進(jìn)階圖形——復(fù)雜柱形圖堆積柱形圖堆積柱形圖,即將若干柱形圖堆疊起來的統(tǒng)計圖形。它也可以類似于餅圖展示數(shù)據(jù)的分布。繪制思路如下:(1)繪制第一個柱形圖;(2)以第一個柱形圖為底繪制第二個柱形圖,以此類推;(3)完善圖形。1453進(jìn)階圖形——復(fù)雜柱形圖堆積柱形圖如果想要繪制能夠反映數(shù)據(jù)的百分比分布的堆積柱形圖,則需要先計算百分比值,再繪制圖形。1463進(jìn)階圖形——復(fù)雜柱形圖誤差棒柱形圖在前一章講過了誤差棒圖的繪制。誤差棒圖實際上還可以和柱形圖結(jié)合使用,需要在pyplot.bar()中補充一些參數(shù),補充參數(shù)含義如下:xerr,yerr:分別針對水平型、垂直型誤差。error_kw:設(shè)置誤差記號的相關(guān)參數(shù),例如,elinewidth設(shè)置線型粗細(xì),ecolor設(shè)置顏色,capsize設(shè)置誤差線邊界橫線的長度。1473進(jìn)階圖形——復(fù)雜條形圖復(fù)雜條形圖如并列條形圖、堆積條形圖、帶誤差棒的條形圖,其實現(xiàn)過程與復(fù)雜柱形圖相比沒有很大的區(qū)別,基本上和柱形圖與條形圖的繪制流程一致,此處不再贅述。本小節(jié)主要介紹如何通過條形圖達(dá)到類似甘特圖的效果。1483進(jìn)階圖形——復(fù)雜條形圖在Matplotlib中通過pyplot.broken_barh()繪制類似甘特圖的間斷條形圖。其中,常用參數(shù)如下:xranges:(xmin,xwidth)組成的數(shù)組,其中xmin是每個起始點的坐標(biāo),xwidth是每個塊的寬度。yranges:(ymin,ymax)規(guī)定某一組方塊的y坐標(biāo)位置,ymin為起始坐標(biāo),ymax是寬度。1493進(jìn)階圖形——堆疊圖堆疊圖主要用于顯示部分對整體隨時間的變化關(guān)系,它與餅圖很相似,但是,堆疊圖反映的是數(shù)據(jù)隨著時間的變化關(guān)系。在Matplotlib中通過pyplot.stackplot()繪制堆疊圖。主要參數(shù)如下:x:維度為n的一維數(shù)組;y:2維數(shù)組(維度m×n)或1維數(shù)組的序列(每維1×n)1503進(jìn)階圖形——子圖子圖是將整個畫布劃分成若干塊,再在每一塊上繪制的圖形。在Matplotlib中,有兩種子圖:規(guī)則劃分的子圖與不規(guī)則劃分的子圖。在正式介紹子圖之前,先解釋一個概念。以subplot()為例,subplot(n1,n2,n3)表示將整個畫布劃分成n1×n2的矩陣,該plot為第n3個圖。subplot(n1,n2,n3)也可以寫作subplot(n1n2n3),中間省略逗號也是可以運行成功的,但不提倡這么做。1513進(jìn)階圖形——子圖規(guī)則劃分的子圖通過pyplot.subplot()創(chuàng)建幾何形狀相同的子圖。不過需要記得在調(diào)用pyplot.subplot()前要先調(diào)用pyplot.figure()獲取畫布,才能進(jìn)行后續(xù)操作。1523進(jìn)階圖形——子圖還可以在整個畫布中顯示奇數(shù)個圖形規(guī)則劃分的子圖1533進(jìn)階圖形——子圖不規(guī)則劃分的子圖在上一節(jié)中,即使繪制的是奇數(shù)個圖形,但還是規(guī)則劃分的。如果想要將畫布不規(guī)則劃分,需要使用函數(shù)pyplot.subplot2grid()。首先對subplot2grid()參數(shù)的含義進(jìn)行解釋。以subplot2grid((3,3),(1,0),colspan=2,rowspan=2)為例,該命令表示將整個畫布看作3×3的矩陣,該圖形起始于(1,0),占2列2行。其中參數(shù)colspan和rowspan的缺省值為1。1543進(jìn)階圖形——等高線圖等高線圖經(jīng)常用在繪制梯度下降算法的相關(guān)示意圖中。在Matplotlib中通過pyplot.contour()繪制等高線。繪制等高線最基本、最重要的三個參數(shù)是長、寬、高,對應(yīng)x、y和z。1553進(jìn)階圖形——等高線圖如果需要的是填充等高線,使用命令pyplot.contourf()1563進(jìn)階圖形——熱力圖熱力圖,也可以稱作熱圖、密度表等,主要用于展示數(shù)據(jù)的分布情況。標(biāo)準(zhǔn)的熱力圖由三個維度的數(shù)據(jù)組成,兩組連續(xù)的數(shù)據(jù)作為x軸和y軸,第三組數(shù)據(jù)通過顏色深淺程度反映。熱力圖在機器學(xué)習(xí)中的使用頻率較高。Matplotlib中繪制熱力圖需要使用到兩個函數(shù)—pyplot.imshow()和pyplot.colorbar()1573進(jìn)階圖形——熱力圖其中,imshow()的cmap用來修改色系,有以下參數(shù):hot:從黑色平滑過度到紅色、橙色和黃色的背景色,然后到白色。cool:包含青綠色和品紅色的陰影色。從青綠色平滑變化到品紅色。gray:返回線性灰度色圖。bone:具有較高的藍(lán)色成分的灰度色圖。white:全白的單色色圖。spring:包含品紅色和黃色的陰影顏色。summer:包含綠色和黃色的陰影顏色。autumn:從紅色平滑變化到橙色,然后到黃色。winter:包含藍(lán)色和綠色的陰影色。1583進(jìn)階圖形——3D圖形Matplotlib除了可以繪制上述各式各樣的2D圖形,還可以繪制3D圖形。最基本的3D圖是由(x,y,z)三維坐標(biāo)點構(gòu)成的線圖與散點圖,可以用ax.plot3D和ax.scatter3D函數(shù)來創(chuàng)建,默認(rèn)情況下,散點會自動改變透明度,以在平面上呈現(xiàn)出立體感。159擴充功能4.1604擴充功能Matplotlib除了前述功能外,還可以和其他框架結(jié)合使用。本節(jié)從Matplotlib與tex、qt和tkinter三個組件的結(jié)合使用出發(fā),簡要地介紹Matplotlib的擴展功能。1614擴充功能——Matplotlib與tex的結(jié)合當(dāng)對復(fù)雜的函數(shù)進(jìn)行標(biāo)注時,若需要添加特殊的數(shù)學(xué)公式,可以使用LaTex編寫數(shù)學(xué)公式。由于Matplotlib自帶TeX的表達(dá)式解析器、字體和引擎等,直接將數(shù)學(xué)表達(dá)式放在一對$之間就可以正常輸出1624擴充功能——Matplotlib與qt的結(jié)合Matplotlib可以將qt作為圖形后端,實現(xiàn)交互式繪圖此時會彈出一個窗口,在這個窗口就可以對圖形進(jìn)行縮放、個性化設(shè)置窗口的大小、保存圖片等操作。163此時單擊“退出”按鈕,就可以達(dá)到退出窗口的目的。4擴充功能——Matplotlib與tkinter的結(jié)合tkinter是使用Python進(jìn)行窗口視窗設(shè)計的模塊。tkinter模塊(“Tk接口”)是Python的標(biāo)準(zhǔn)TkGUI工具包的接口。作為Python特定的GUI界面,tkinter也可以內(nèi)嵌在Matplotlib中。164165數(shù)據(jù)可視化第一章Matplotlib的基本使用第二章Matplotlib的進(jìn)階使用第三章Seaborn的使用第四章目錄Contents…第五章緒論166第四章Seaborn的使用1引言基本設(shè)置2關(guān)聯(lián)圖34分類圖5分布圖6回歸圖7矩陣圖8網(wǎng)格圖167引言1.1681引言Matplotlib雖然能繪制各具特色的圖,并具有非常好的擴展性,但它繪出的圖形從某種程度來說,會顯得比較單調(diào),在色彩的漸變上也比較單一。而Seaborn是基于Matplotlib的圖形可視化Python包。它提供了一種高度交互式界面,便于用戶制作各種有吸引力的統(tǒng)計圖表。它在Matplotlib的基礎(chǔ)上進(jìn)行了更高級的API(ApplicationProgrammingInterface)封裝,從而使得作圖更加容易,在大多數(shù)情況下我們使用Seaborn能做出很具有吸引力的圖,比使用Matplotlib能制作具有更多特色的圖。我們可以把Seaborn視為Matplotlib的補充,而不是替代物。同時,它能高度兼容Numpy與Pandas數(shù)據(jù)結(jié)構(gòu)以及Scipy與Statsmodels等統(tǒng)計模型。1691引言Seaborn的官網(wǎng)主頁向我們展示了實例,有著各種各樣的分類圖、線圖等。接下來讓我們由淺入深地學(xué)習(xí)Seaborn這個可視化工具。170基本設(shè)置2.1712基本設(shè)置1722基本設(shè)置——Seaborn的安裝Seaborn與Matplotlib的安裝大同小異,讀者只需將本書2.2節(jié)的安裝命令中的matplotlib替換為seaborn,即可完成安裝。例如,在Windows環(huán)境下,在cmd中直接輸入命令“pipinstallseaborn”就可以完成Seaborn的安裝。如果是使用Anaconda,在AnacondaPrompt中輸入“condainstallseaborn”也可以完成Seaborn的安裝。1732基本設(shè)置——配置項設(shè)置在Seaborn中,通過seaborn.set()調(diào)整圖像的一些配置項,包括以下內(nèi)容:context:參數(shù)控制著默認(rèn)的畫幅大小,可選參數(shù)有[paper,notebook,talk,poster]四個值。其中,畫幅大小依次為poster>talk>notebook>paper。style:參數(shù)控制默認(rèn)樣式,可選參數(shù)有[darkgrid,whitegrid,dark,white,ticks]。palette:參數(shù)為預(yù)設(shè)的調(diào)色板,可選參數(shù)有[deep,muted,bright,pastel,dark,colorblind]。有關(guān)palette的具體設(shè)置,后續(xù)會詳細(xì)介紹。font:用于設(shè)置字體。font_scale:設(shè)置字體大小。color_codes:不使用調(diào)色板而采用Matplotlib中的如r等顏色縮寫。1742基本設(shè)置——配置項設(shè)置如果想具體地對某一個配置項如context進(jìn)行設(shè)置,可以通過sns.set_context()來配置1752基本設(shè)置——配置項設(shè)置如果想知道context()當(dāng)前的具體參數(shù)情況,可以通過sns.plotting_context()查看我們在上一個圖中設(shè)定了lines.linewidth=6.0,與此處顯示的一致。1762基本設(shè)置——配置項設(shè)置我們還可以添加context參數(shù),查看另一個參數(shù)下的具體參數(shù)值分別是多少。例如,我們想了解當(dāng)context=‘poster’時的具體參數(shù)值其中,lines.markersize為12,lines.linewidth為31772基本設(shè)置——實用功能我們在學(xué)習(xí)使用Seaborn繪圖的過程中,可能會因為數(shù)據(jù)而頭疼。Seaborn很好地為我們解決了數(shù)據(jù)的問題。Seaborn自帶了很多數(shù)據(jù)集,不過首次加載需要計算機處于聯(lián)網(wǎng)狀態(tài)。通過load_dataset(‘data_name’)加載后會得到DataFrame格式的數(shù)據(jù)。Seaborn包含的數(shù)據(jù)集如右圖所示,有非常著名的泰坦尼克號數(shù)據(jù)集、鳶尾花數(shù)據(jù)集等。我們可以充分利用這些數(shù)據(jù)集load_dataset()1782基本設(shè)置——實用功能以tips數(shù)據(jù)集為例,我們可以制作一個柱形圖load_dataset()1792基本設(shè)置——實用功能reset_defaults()/reset_orig()在對某一個特定的圖形修改了如context或style后,若后面的圖不想用修改后的參數(shù),可以直接利用sns.set()命令全部恢復(fù)默認(rèn)值。但是如果只是修改了rc參數(shù),想要恢復(fù)rc參數(shù),其他的參數(shù)不變,用sns.set()就會顯得有點大材小用。Seaborn中通過reset_defaults()將所有rc參數(shù)恢復(fù)為默認(rèn)設(shè)置;通過reset_orig()將所有rc參數(shù)恢復(fù)為原始設(shè)置。1802基本設(shè)置——實用功能despine()在Matplotlib中,需要令坐標(biāo)軸的顏色為none,以達(dá)到移去部分坐標(biāo)軸的目的。而在Seaborn中,通過seaborn.despine()來控制坐標(biāo)軸相關(guān)的操作。despine()參數(shù)如下:其中默認(rèn)上方和右方為True,即不顯示。如果需要顯示,可以設(shè)置為False。Offset是坐標(biāo)軸偏移的距離;而當(dāng)刻度沒有完全覆蓋整個軸的范圍時,trim參數(shù)可以用來限制已有脊柱的范圍。1812基本設(shè)置——調(diào)色板設(shè)置調(diào)色板可以說是Seaborn中非常重要且十分獨特的一個功能。雖然Matplotlib中的顏色選項可以滿足很多需求,但是想要更好地從顏色方面美化圖形,單一的顏色是遠(yuǎn)遠(yuǎn)不夠的。1822基本設(shè)置——調(diào)色板設(shè)置分類調(diào)色板當(dāng)不用區(qū)分離散數(shù)據(jù)的順序時,可以使用分類調(diào)色板。分類調(diào)色板通過color_palette()創(chuàng)建,是系統(tǒng)默認(rèn)給出的顏色同時,分類調(diào)色板還有6種主題1832基本設(shè)置——調(diào)色板設(shè)置以'muted'為例,設(shè)置方式如下所示分類調(diào)色板1842基本設(shè)置——調(diào)色板設(shè)置圓形調(diào)色板當(dāng)需要6種以上的顏色時,可以在圓形顏色空間中按均勻間隔畫出顏色,1852基本設(shè)置——調(diào)色板設(shè)置圓形調(diào)色板還可以通過hls_palette()或husl_palette()來控制亮度和飽和度1862基本設(shè)置——調(diào)色板設(shè)置ColorBrewer調(diào)色板ColorBrewer其實也是一個分類色板,它同樣存在于matplotlibcolormaps中,但是并沒有得到很好的處理。在Seaborn中,當(dāng)調(diào)用ColorBrewer分類色板時,顏色會成對出現(xiàn),一淺一深1872基本設(shè)置——調(diào)色板設(shè)置xkcd調(diào)色板xkcd包含了一系列命名RGB顏色,通過xkcd_rgb函數(shù)調(diào)用1882基本設(shè)置——調(diào)色板設(shè)置漸變調(diào)色板當(dāng)數(shù)據(jù)范圍從相對較低或不感興趣的值到相對較高或有趣的值時,就需要使用到漸變調(diào)色板,漸變調(diào)色板在利用kdeplot()和heatmap()函數(shù)繪制圖形時使用頻率較高可以在"Reds"后面添加"_r"使亮度反轉(zhuǎn),但不是所有的顏色都可以反轉(zhuǎn)。1892基本設(shè)置——調(diào)色板設(shè)置cubehelix調(diào)色板cubehelix調(diào)色板是一個既能使亮度線性變化又能使色調(diào)變化的線性色板。其中參數(shù)含義如下:n_colors:顏色個數(shù)。start:值區(qū)間在[0,3],開始顏色。rot:float,顏色旋轉(zhuǎn)角度,值區(qū)間在(-1,1)。gamma:顏色伽馬值,大于1時較亮,小于1時較暗。dark,light:值區(qū)間在[0,1],表示顏色深淺。reverse:布爾值,默認(rèn)為False,顏色由淺到深。1902基本設(shè)置——調(diào)色板設(shè)置自定義漸變調(diào)色板自定義漸變調(diào)色板可以簡單地通過light_palette()或dark_palette()設(shè)定某種顏色還可以通過input參數(shù)選擇顏色模式,包括rgb、hls、husl、xkcd1912基本設(shè)置——調(diào)色板設(shè)置選擇調(diào)色板我們可以通過choose_colorbrewer_palette()函數(shù)來選擇調(diào)色板。參數(shù)含義如下:sequential:順序,可以簡寫為s。diverging:發(fā)散,可以簡寫為d。qualitative:分類,可以簡寫為q。如果希望返回值是可以傳遞給seaborn或matplotlib函數(shù)的colormap對象,則可以將as_cmap參數(shù)設(shè)置為True。192關(guān)聯(lián)圖3.1933關(guān)聯(lián)圖關(guān)聯(lián)圖是日常生活中非常常見的一個圖形種類,用來了解變量之間的相互關(guān)聯(lián),或探尋變量之間的相關(guān)關(guān)系等。1943關(guān)聯(lián)圖——散點圖scatterplot()散點圖用點描繪了兩個變量甚至三個變量的分布,每個點代表著每個數(shù)據(jù)的觀察值,可以很直觀地看出變量之間是否存在一定的關(guān)系或者趨勢。在Seaborn中通過seaborn.scatterplot()創(chuàng)建散點圖。常用參數(shù)如下:x,y:數(shù)據(jù)中變量的名稱,可以是分類或數(shù)字。data:DataFrame,數(shù)據(jù)集。hue:data中的變量名稱,用于確定顏色的變量。style:data中的變量名稱,用于確定形狀的變量。sizes:列表,字典或元組,控制散點大小。markers:布爾型,列表或字典。ci:整型或'sd'orNone。與估算器聚合時繪制的置信區(qū)間的大小?!皊d”表示繪制數(shù)據(jù)的標(biāo)準(zhǔn)偏差。設(shè)置為None將跳過自舉。n_boot:整型。自舉法的數(shù)量,用于計算區(qū)間的置信度。通過hue、size、style參數(shù)分別添加第二、三、四個變量。不過變量過多會顯得圖形很混亂。1953關(guān)聯(lián)圖——折線圖lineplot()散點圖只能得到一個大致的趨勢,如果想了解一個變量與連續(xù)變量的關(guān)系,則需要使用到折線圖。在Seaborn中通過seaborn.lineplot()創(chuàng)建折線圖。常用參數(shù)如下:x,y:data或向量數(shù)據(jù)中變量的名稱。hue:data中的變量名稱,用于確定點的顏色的變量。size:data中的變量名稱,用于確定點的大小的變量。style:data中的變量名稱,用于確定點的形狀的變量。palette:調(diào)色板名稱,列表或字典。用于hue變量的不同級別的顏色。dashes:布爾值,列表或字典。設(shè)置為True時將使用默認(rèn)的短劃線,設(shè)置為False時將對所有子集使用實線。sort:布爾值,如果為True,則數(shù)據(jù)將按x與y變量排序,否則將按照它們在數(shù)據(jù)集中出現(xiàn)的順序連接點。err_style:取值band或bars,表示用半透明誤差帶或離散誤差棒繪制置信區(qū)間。err_band:關(guān)鍵字參數(shù)字典。用于控制誤差線美觀的附加參數(shù)。還可以將誤差帶修改成誤差棒,并修改置信區(qū)間大小1963關(guān)聯(lián)圖——子圖

relplot()relplot()函數(shù)是基于FacetGrid類(后續(xù)會詳細(xì)介紹FacetGrid),并能夠通過修改kind參數(shù)繪制散點圖和折線圖的一個關(guān)聯(lián)圖函數(shù),通過col和row參數(shù)控制行和列顯示的內(nèi)容。常用參數(shù)如下:x,y:data中的變量名。hue:data中的變量名稱,用于確定點的顏色的變量。size:data中的變量名稱,用于確定點的大小的變量。style:data中的變量名稱,用于確定點的形狀的變量。row,col:data中的變量名,用于確定分面的變量。row_order,col_order:設(shè)置col和row中的順序。kind:string,繪制圖的類型,與seaborn相關(guān)的圖一致。height:每個facet的高度(英寸),默認(rèn)為5。aspect:標(biāo)量,每個facet的長寬比,默認(rèn)為1。通過height和aspect修改圖像的高和寬197分類圖4.1984分類圖當(dāng)變量中存在分類變量的時候,通常會選用分類圖形展示數(shù)據(jù)。在Seaborn中,分類圖主要分為三類:分類散點圖、分類分布圖和分類估計圖。1994分類圖——分類散點圖分類散點圖,也就是將分類變量的每個觀測結(jié)果都展示出來,可以通過stripplot()和swarmplot()函數(shù)繪制。stripplot()stripplot()函數(shù)語法如下2004分類圖——分類散點圖stripplot()常用參數(shù)和上一節(jié)的函數(shù)類似,其他參數(shù)含義如下:jitter:float,True或1。要應(yīng)用的抖動量(僅沿分類軸)。當(dāng)有許多點并且它們重疊時,可以指定抖動量(均勻隨機變量支持的寬度的一半)使得更容易看到分布,或者僅使用True作為良好的默認(rèn)值。dodge:bool。使用hue嵌套時,將其設(shè)置為True則沿著分類軸分離不同色調(diào)級別的條帶。否則,每個級別的點將相互疊加。orient:可選參數(shù)有[v,h]。圖的方向(垂直或水平)。2014分類圖——分類散點圖通過dodge可以將兩個變量分離開,并改為橫向的(需要先將x和y的值對換)stripplot()2024分類圖——分類散點圖swarmplot()swarmplot()函數(shù)與stripplot()函數(shù)的參數(shù)和功能基本一致,唯一不同的是,swarmplot()函數(shù)是沿著分類軸調(diào)整點,進(jìn)而使點不重疊,但是不能應(yīng)用于大量數(shù)據(jù).2034分類圖——分類分布圖分類分布圖可以通過boxplot()/boxenplot()和violinplot()函數(shù)繪制。箱線圖

boxplot()/boxenplot()箱線圖的統(tǒng)計學(xué)含義見第2章的內(nèi)容,這里主要講Seaborn中的繪制方法。boxplot()函數(shù)語法如下:常用參數(shù)和上一節(jié)的函數(shù)類似,其他參數(shù)含義如下:saturation:float??刂朴糜诶L制顏色的原始飽和度的比例。width:float。不使用色調(diào)嵌套時完整元素的寬度,或主要分組變量一個級別的所有元素的寬度。fliersize:float。用于表示異常值觀察的標(biāo)記的大小。whis:float??刂圃诔^高低四分位數(shù)時IQR的比例。notch:boolean。是否使矩形框“凹陷”以指示中位數(shù)的置信區(qū)間。linewidth:float。構(gòu)圖元素的灰線寬度。2044分類圖——分類分布圖箱線圖

boxplot()/boxenplot()通過設(shè)置參數(shù)orient='h',可以繪制橫向的箱線圖2054分類圖——分類分布圖箱線圖

boxplot()/boxenplot()boxenplot()用于為更大的數(shù)據(jù)集繪制增強的箱線圖。這種風(fēng)格的繪圖最初被命名為“信值圖”,因為它顯示了大量被定義為“置信區(qū)間”的分位數(shù)。它類似于繪制分布的非參數(shù)表示的箱線圖,其中所有特征對應(yīng)于實際觀察的數(shù)值點。通過繪制更多分位數(shù),它提供了有關(guān)分布形狀的更多信息,特別是尾部數(shù)據(jù)的分布。boxenplot()函數(shù)語法如下常用參數(shù)和上一節(jié)的函數(shù)類似,其他參數(shù)含義如下:k_depth:可選參數(shù)[proportion,tukey,trustworthy]。表示不同的箱盒數(shù)量被擴展的比例。scale:可選參數(shù)[linear,exponential,area]。表示顯示箱盒寬度的方法。linear是通過恒定的線性因子減小寬度,exponential是使用未覆蓋的數(shù)據(jù)的比例調(diào)整寬度,area與所覆蓋的數(shù)據(jù)的百分比成比例。2064分類圖——分類分布圖箱線圖

boxplot()/boxenplot()2074分類圖——分類分布圖小提琴圖

violinplot()小提琴圖是箱線圖與核密度圖的結(jié)合,箱線圖展示了分位數(shù)的位置,核密度圖則展示了任意位置的密度,通過小提琴圖可以知道哪些位置的數(shù)據(jù)點聚集的較多,因其形似小提琴而得名。小提琴圖中間的黑色粗條表示四分位數(shù)范圍,從其延伸的細(xì)黑線代表95%置信區(qū)間,而白點則為中位數(shù)。小提琴圖受樣本量影響較大,對于較小樣本量,展現(xiàn)效果不是很好。2084分類圖——分類分布圖violinplot()函數(shù)語法如下:小提琴圖

violinplot()常用參數(shù)和上一節(jié)的函數(shù)類似,其他參數(shù)含義如下:bw:float??蛇x參數(shù)有[scott,silverman]。內(nèi)置變量值或浮點數(shù)的比例因子,都用來計算核密度的帶寬。實際的核大小由比例因子乘以每個分箱內(nèi)數(shù)據(jù)的標(biāo)準(zhǔn)差確定。cut:float。以帶寬大小為單位的距離,以控制小提琴圖外殼延伸超過內(nèi)部極端數(shù)據(jù)點的密度。設(shè)置為0以將小提琴圖范圍限制在觀察數(shù)據(jù)的范圍內(nèi)。scale:可選參數(shù)有[area,count,width]。該方法用于縮放每張小提琴圖的寬度。若為area,每張小提琴圖具有相同的面積。若為count,小提琴圖的寬度會根據(jù)分箱中觀察點的數(shù)量進(jìn)行縮放。若為width,每張小提琴圖具有相同的寬度。gridsize:int。用于計算核密度估計的離散網(wǎng)格中的數(shù)據(jù)點數(shù)目。width:float。表示不使用色調(diào)嵌套時的完整元素的寬度,或主要分組變量的一個級別的所有元素的寬度。inner:可選參數(shù)有[box,quartile,point,stick,None]??刂菩√崆賵D內(nèi)部數(shù)據(jù)點的表示。若為box,則繪制一個微型箱線圖。若為quartiles,則顯示四分位數(shù)線。若為point或stick,則顯示具體數(shù)據(jù)點或數(shù)據(jù)線。使用None則繪制不加修飾的小提琴圖。split:bool。當(dāng)使用帶有兩種顏色的變量時,將split設(shè)置為True會為每種顏色繪制對應(yīng)半邊小提琴,從而可以更直接地比較不同的分布。2094分類圖——分類分布圖小提琴圖

violinplot()當(dāng)需要對比某個分類變量的兩種取值時,通過split參數(shù)可以使對比更清晰2104分類圖——分類估計圖分類估計圖可以通過countplot()、barplot()和pointplot()函數(shù)繪制。分類計數(shù)圖

countplot()當(dāng)條形圖只需要用來顯示每個類別的數(shù)量,而不需要計算第2個變量的統(tǒng)計量時,可以使用countplot()。它和barplot()存在一定的區(qū)別,countplot()函數(shù)不能同時輸入x與y,只能分開輸入。countplot()函數(shù)語法如下2114分類圖——分類估計圖估計置信區(qū)間

barplot()在Seaborn中,通過barplot()函數(shù)繪制柱形圖。barplot()函數(shù)語法如下:常用參數(shù)和上一節(jié)的函數(shù)類似,其他參數(shù)含義如下:n_boot:int。計算置信區(qū)間需要的Boostrap迭代次數(shù)。errcolor:表示置信區(qū)間的線的顏色。errwidth:誤差條的線的寬度。capsize:float。誤差條兩端的寬度。2124分類圖——分類估計圖估計置信區(qū)間

barplot()還可以調(diào)用Matplotlib中bar()函數(shù)中的參數(shù),進(jìn)行更多的設(shè)置2134分類圖——分類估計圖點圖

pointplot()點圖用來繪制關(guān)于數(shù)值變量的中心趨勢的估計,此處的中心趨勢一般是指平均值,并可以使用誤差線提供關(guān)于該估計的不確定性的一些指示。點圖可能比條形圖更有利于聚焦一個或多個分類變量的不同級別之間的比較。點圖僅顯示對應(yīng)統(tǒng)計量,但是有時顯示每個級別的值的分布更加有用,在這種情況下,其他繪圖方法,例如箱線圖或小提琴圖可能更合適。2144分類圖——分類估計圖點圖

pointplot()在Seaborn中通過pointplot()創(chuàng)建點圖,參數(shù)如下:常用參數(shù)和上一節(jié)的函數(shù)類似,其他參數(shù)含義如下:scale:float。繪圖元素的比例因子。join:bool型。如果為True,則在hue級別相同的點估計值之間繪制線條。2154分類圖——分類估計圖點圖

pointplot()2164分類圖——分類型數(shù)據(jù)繪圖類似于之前提到的relplot()函數(shù),用分類型數(shù)據(jù)(CategoricalData)繪圖的catplot()函數(shù)也是基于FacetGrid類開發(fā)的,可以對所有的分類圖函數(shù)統(tǒng)一訪問。catplot()函數(shù)語法如下:常用參數(shù)和上一節(jié)的函數(shù)類似,其他參數(shù)含義如下:legend_out:bool。如果為True,則圖形尺寸將被擴展,圖例將繪制在中間右側(cè)的圖形之外。share{x,y}:bool。可選參數(shù)有[col,row]。如果為True,則facet將跨行跨越列和/或x軸共享y軸。margin_titles:bool。如果為True,則行變量的標(biāo)題將繪制在最后一列的右側(cè)。2174分類圖——分類型數(shù)據(jù)繪圖218分布圖5.2195分布圖在seaborn中,分布圖分為兩類:單變量分布圖和雙變量分布圖。2205分布圖——單變量分布圖kdeplot()核密度估計在概率論中用來估計未知的密度函數(shù),屬于非參數(shù)檢驗方法之一。我們通過核密度估計圖可以比較直觀地看出數(shù)據(jù)樣本本身的分布特征。kdeplot()函數(shù)語法如下:2215分布圖——單變量分布圖kdeplot()常見參數(shù)含義如下:data:一維陣列。第一輸入數(shù)據(jù)。data2:一維陣列。第二輸入數(shù)據(jù)。如果存在,將估計雙變量kdeplot()。shade:布爾值。如果為True,則在KDE曲線下方的區(qū)域中增加陰影。vertical:布爾值。如果為True,密度圖將顯示在x軸。kernel:可選參數(shù)有[gau,cos,biw,epa,tri,triw]。要擬合的核的形狀,雙變量只能使用高斯核gau。bw:可選參數(shù)有[scott,silverman,scalar,pairofscalars]。用于確定雙變量圖的每個維的核大小、標(biāo)量因子或標(biāo)量的參考方法的名稱。gridsize:評估網(wǎng)格中的離散點數(shù)。cut:標(biāo)量。繪制估計值以從極端數(shù)據(jù)點切割*bw。clip:一對標(biāo)量。用于擬合kde圖的數(shù)據(jù)點的上下限值。cumulative:布爾值。如果為True,則繪制kde估計圖的累積分布。shade_lowest:布爾值。如果為True,則屏蔽雙變量kde圖的最低輪廓。cbar:布爾值。如果為True,則繪制雙變量kde圖,為繪制的圖像添加顏色條。2225分布圖——單變量分布圖kdeplot()還可以繪制兩個變量的陰影核密度圖,并添加顏色漸變條2235分布圖——單變量分布圖distplot()distplot()用來繪制直方圖,又稱質(zhì)量分布圖,它是表示連續(xù)數(shù)據(jù)變化情況的一種主要工具。用直方圖可以解析出數(shù)據(jù)的規(guī)則性,比較直觀地看出產(chǎn)品質(zhì)量特性的分布狀態(tài),對于數(shù)據(jù)分布狀況一目了然,便于判斷其總體質(zhì)量分布情況。displot()集合了Matplotlib的hist()與核函數(shù)估計kdeplot的功能,增加了rugplot分布觀測條顯示與利用scipy庫fit擬合參

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論