Python數(shù)據(jù)可視化 課件 第7、8章 Seaborn繪圖庫、Pyecharts交互可視化庫_第1頁
Python數(shù)據(jù)可視化 課件 第7、8章 Seaborn繪圖庫、Pyecharts交互可視化庫_第2頁
Python數(shù)據(jù)可視化 課件 第7、8章 Seaborn繪圖庫、Pyecharts交互可視化庫_第3頁
Python數(shù)據(jù)可視化 課件 第7、8章 Seaborn繪圖庫、Pyecharts交互可視化庫_第4頁
Python數(shù)據(jù)可視化 課件 第7、8章 Seaborn繪圖庫、Pyecharts交互可視化庫_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Python數(shù)據(jù)可視化第7章Seaborn統(tǒng)計數(shù)據(jù)可視化教師:xxx2024.07第1節(jié)Seaborn簡介第7章Seaborn統(tǒng)計數(shù)據(jù)可視化第2節(jié)

可視化分類數(shù)據(jù)第3節(jié)

可視化統(tǒng)計關系第4節(jié)

可視化變量分布第5節(jié)

其他方法本章介紹Python平臺下另一最常用的繪圖庫Seaborn,在官網(wǎng)/上注明了Seaborn的目標就是實現(xiàn)統(tǒng)計數(shù)據(jù)可視化(statisticaldatavisualization)。該庫提供了更精美的繪圖效果和更方便快捷的數(shù)據(jù)可視化方法,目前最新版本是0.13.2(2024年07月)。新版和舊版在某些參數(shù)名上有變動,讀者學習本章時請升級到新版(pipinstallseaborn==0.12.2)。其0.9版本的中文文檔網(wǎng)址為

。本章代碼在0.12.2版下測試通過,各代碼段首部默認包含下述語句。為節(jié)省版面,后續(xù)代碼段不再列出。第1節(jié)Seaborn簡介importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltimportseabornassns #引入seaborn,按慣例命名為snsplt.rcParams['font.sans-serif']='SimHei' #設置中文字體plt.rcParams['axes.unicode_minus']=False #設置負號顯示正常sns.__version__#0.12.2,查看seaborn版本一、Seaborn繪圖特點Seaborn建立在Matplotlib基礎之上,用很少的代碼就可以實現(xiàn)精美的繪圖效果,其改進主要體現(xiàn)在以下方面:1.Seaborn對原Matplotlib的很多方法和參數(shù)進行了包裝,調用更加方便,并對圖形進行了符合現(xiàn)代繪圖風格的美化修飾。2.Seaborn繪圖時可設置語義元素(hue),將不同類別的數(shù)據(jù)自動用多子圖、不同顏色、不同符號進行區(qū)分,不需要額外編寫代碼控制。3.Seaborn可以對數(shù)據(jù)自動匯總計算并利用結果作圖。例如對統(tǒng)計數(shù)據(jù)自動分類、求均值、計數(shù),極大減少了用戶的編碼量。4.Seaborn和Pandas的DataFrame對象緊密集成,只需指定列名即可繪圖。Seaborn的函數(shù)接口高度統(tǒng)一,可以由數(shù)個高級函數(shù)僅通過變動kind圖形類型參數(shù)來調用低一級的繪圖函數(shù),諸如散點圖、條形圖、箱線圖等都可以用同一條繪圖命令設置不同的kind參數(shù)完成。注意:Seaborn不是用于取代matplotlib,很多繪圖細節(jié)仍需借助plt進行設置,兩者配合工作。Seaborn用于快速成圖,plt用于設置圖形細節(jié)。Seaborn的API參考鏈接:/api.html#categorical-api

。下面以titanic(泰坦尼克)數(shù)據(jù)集為例初步展示Seaborn繪圖效果。Seaborn包含了若干示例數(shù)據(jù),詳見/mwaskom/seaborn-data,示例數(shù)據(jù)在使用時可實時下載。如因網(wǎng)絡原因無法下載,可將本書資源中的seaborndata.rar內的所有.csv文件解壓至某目錄,在使用sns.load_dataset()讀數(shù)據(jù)時指定該目錄即可。本章主要使用其中的titanic、tips、iris和anscombe等數(shù)據(jù)集演示。本節(jié)代碼見資源包

"07.1.ipynb"文件,可用該文件配合演示。繪制客艙平均生還率對比圖如下:importseabornassns #設置繪圖主題為ticks(白色背景、無網(wǎng)格線、有刻度線)sns.set_style('ticks') #從seaborndata子目錄讀取titanic文件,返回DataFrame數(shù)據(jù)框tit=sns.load_dataset('titanic',data_home='./seaborndata')sns.catplot(x='pclass',y='survived',kind='bar',data=tit)#右圖二、繪圖示例說明:(1)survived生還列,0未生還,1生還;pclass客艙等級列,有1、2、3三個等級。seaborn自動按x列分組,對每組的y列求均值。相當于y列先求所有1的和,再除以數(shù)據(jù)總條數(shù)得到平均生還率。1類艙旅客生還率最高。(2)柱狀圖上的小黑條是誤差棒,表示數(shù)據(jù)的置信區(qū)間。(3)tit=pd.read_csv('./seaborndata/titanic.csv')#用pd讀數(shù)據(jù)亦可上圖只使用了一條catplot命令就完成了按客艙分類、均值計算和繪圖的功能,由此可見Seaborn的高效。上面的命令在統(tǒng)計時沒有區(qū)分性別,如果想按性別分類統(tǒng)計,可在命令中增加hue='sex'參數(shù)。hue在Seaborn中被稱為語義,可視為類別區(qū)分,不同語義的數(shù)據(jù)自動用不同顏色表示,這樣可將每類客艙中的男性和女性分開求平均生還率。ci=None表示不繪制誤差條。下圖可見女性生還率遠高于男性。sns.catplot(x='pclass',y='survived',kind='bar',hue='sex',ci=None,data=tit)#左圖,注意hue二、繪圖示例改變kind參數(shù)可繪制不同類型的圖形。繪制各客艙旅客的年齡箱線圖如下:sns.catplot(x='pclass',y='age',kind='box',col='sex',data=tit)#右圖,kind='box'箱線圖,col參數(shù)(分列子圖)如果kind='strip'(此為默認值)則繪制散點圖,見左下圖。繪制時每類客艙有很多旅客,Seaborn將旅客的年齡值分散顯示,各散點盡量不相互覆蓋,以便于觀察點的分布。與之相對,如果用plt命令畫年齡散點圖,可以看到很多點是聚集在一起的,無法分辨,見右下圖。sns.catplot(x='pclass',y='age',data=tit)#年齡散點圖,左圖,不設kind時默認為kind='strip'型散點plt.figure() #創(chuàng)建新畫布plt.scatter(x=tit.pclass,y=tit.age)#右圖,用plt命令繪散點圖會重疊覆蓋二、繪圖示例主題是預定義的樣式集合。Seaborn有五個預設主題:darkgrid、whitegrid、dark、white和ticks。darkgrid是默認主題,灰色背景帶網(wǎng)格線。whitegrid白色背景帶網(wǎng)格線,dark和white主題則無網(wǎng)格線。ticks主題是白色背景無網(wǎng)格線,但顯示刻度標記。主題可用sns.set(style='樣式名')或sns.set_style('樣式名')切換。sns.set_style('darkgrid') #darkgrid主題。該主題是默認主題,因此亦可簡寫為sns.set()三、主題樣式切換主題時會覆蓋Matplotlib的參數(shù),設置后sns和plt的繪圖命令都會受主題影響。設主題時字體會改為英文字體,導致中文顯示錯誤。因此設置后,應再執(zhí)行plt.rcParams['font.sans-serif']='SimHei'語句重設中文字體。sns.set_style('ticks',{'font.sans-serif':'Simhei'})#或在設置主題時同時設置中文字體繪圖命令執(zhí)行后會自動設置坐標軸標簽、圖例和軸線。如需直接控制圖形的四邊軸線是否顯示可使用sns.despine()命令,該命令應在繪圖命令之后執(zhí)行,默認將屏蔽頂部和右側軸線,只顯示底部和左側軸線。x=np.linspace(-2*np.pi,2*np.pi,100)df=pd.DataFrame({'x':x,'y':np.sin(x)})#創(chuàng)建繪圖所需的DataFrame對象sns.set_style('white')sns.relplot(x='x',y='y',data=df,kind='scatter')sns.despine(left=True,bottom=True) #所有軸線都不顯示,True:屏蔽,False:顯示,左圖

sns.despine(top=False,bottom=False,left=False,right=False)#顯示所有軸線,右圖三、主題樣式數(shù)據(jù)中包含很多類別(category)數(shù)據(jù),例如性別、職稱、質量等級等。在可視化時,通常需要按類別分類繪制對比圖形,Seaborn繪制分類數(shù)據(jù)主要使用catplot()命令。本節(jié)代碼見"07.2.ipynb"文件。第2節(jié)

可視化分類數(shù)據(jù)catplot()是一條高級命令,通過指定x或y參數(shù)為一個列名實現(xiàn)自動分類。常用參數(shù)如下表所示。一、catplot()命令總覽參數(shù)名描

述參數(shù)名描

述x/yx或y軸數(shù)據(jù)列名(必須為字符串)row/col分行/分列子圖(字符串列名)hue語義列(字符串)col_wrap每行最大子圖數(shù)(整數(shù))data數(shù)據(jù)源(必須參數(shù)且為DataFrame對象)ciNone:不繪制誤差條order字符串列表,規(guī)定X軸的分類數(shù)據(jù)順序kind圖形類型(字符串)height子圖高度(英寸)aspect子圖的寬度/高度之比(浮點數(shù))orient方向('v':垂直,'h':水平)palette調色板legendTrue顯示圖例,False不顯示legend_out默認True:圖例顯示在外側hue_order字符串列表,規(guī)定語義類別的順序col_order字符串列表,規(guī)定按列生成子圖的順序seaborn繪圖命令主要分為figure-level圖級和axes-level軸級兩類。圖級命令通過設定kind參數(shù)調用低級的軸級命令完成實際繪圖。下面兩條命令完成的繪圖效果基本相同,實際上就是catplot()圖級命令通過kind='bar'的參數(shù)調用了低一級的barplot()軸級命令完成條形圖繪制。一、catplot()命令總覽sns.catplot(x='pclass',y='survived',hue='sex',kind='bar',ci=None,data=tit)#figure-levelsns.barplot(x='pclass',y='survived',hue='sex',ci=None,data=tit) #axes-levelsns.catplot(x='列名',y='列名',hue='語義列',col='列名',kind='圖形類型',data=df)可設定的kind:kind='strip':默認參數(shù),strip型散點圖,調用sns.stripplot()完成kind='swarm':swarm型散點圖,調用sns.swarmplot()完成kind='box':箱線圖,調用sns.boxplot()完成kind='boxen':增強型箱線圖,調用sns.boxenplot()完成kind='violin':小提琴圖,調用sns.violinplot()完成kind='point':點圖,調用sns.pointplot()完成kind='bar':條形圖,調用sns.barplot()完成kind='count':條形計數(shù)圖,調用sns.countplot()完成要注意的是catplot()圖級命令必須含有data參數(shù),且必須是DataFrame類型,x和y參數(shù)必須是列名字符串。圖級命令支持kind(圖形類型)、col(分列子圖)、row(分行子圖)、height(子圖高度)和aspect(子圖寬度高度之比)等參數(shù),圖級命令可產生多子圖。對比下面兩條命令。一、catplot()命令總覽g=sns.catplot(x='pclass',y='age',kind='box',data=tit)

#正確g=sns.catplot(x=tit.pclass,y=tit.age,kind='box',data=tit)#錯誤,x/y參數(shù)類型錯誤,必須是字符串列名軸級命令(如stripplot()、boxplot()等)中的x和y參數(shù)可以是DataFrame數(shù)據(jù)框的字符串列名,也可以是列表或numpy數(shù)組,data參數(shù)不是必須的,支持hue參數(shù),但不支持kind、col、row、height和aspect等和子圖有關的參數(shù),軸級命令返回的ax對象就是plt中的Axes類型。對比下面三條命令。ax=sns.boxplot(x=tit.pclass,y=tit.age) #正確,x/y參數(shù)可以是Series。返回對象為Axessns.boxplot(x='pclass',y='age',data=tit) #正確,x/y參數(shù)為字符串列名或數(shù)組均可sns.boxplot(x='pclass',y='age',col='sex',kind='box',data=tit)#錯誤,軸級命令不支持col和kind參數(shù)圖級命令執(zhí)行后的返回對象g的類型是axisgrid.FacetGrid,此類對象可包含若干圖形單元格,是由多個子圖構成的一種組合圖形對象。g.fig屬性得到的就是Matplotlib中的Figure對象,如有需要,可引用g.fig并利用plt命令進一步修飾圖形。初步觀察數(shù)據(jù)時最常使用散點圖。分類散點圖主要呈現(xiàn)某個類別中數(shù)據(jù)的聚集情況。下面以sns中最常用的tips小費數(shù)據(jù)集為例演示分類散點圖。sns.catplot(x="day",y="total_bill",data=tips)#右圖,默認kind='strip'二、分類散點圖tips=sns.load_dataset('tips',

data_home='./seaborndata')

#加載tips數(shù)據(jù)集tips.sample(2) #隨機抽取2條數(shù)據(jù)Out: total_bill tip sex smoker day time size106 20.49 4.06 Male Yes Sat Dinner 2125 29.80 4.20 Female No Thur Lunch 6數(shù)據(jù)集tips共7列,3個數(shù)值列和4個類別列,依次為total_bill(賬單金額)、tip(小費)、sex(性別)、smoker(是否吸煙)、day(星期幾,只含星期四/五/六/日)、time(用餐時段Dinner/Lunch)、size(用餐人數(shù))。數(shù)據(jù)在x軸上按星期幾分為4類,每類都有多筆賬單金額,這些數(shù)據(jù)自動采用隨機“抖動”以分散點的位置。如下軸級命令將產生類似的效果。sns.stripplot(x="day",y="total_bill",data=tips,jitter=0.1)參數(shù)jitter控制分散程度,值越大越分散。注意,分類散點圖用于展示某類的數(shù)據(jù)點分布,x是類別變量,1個x值對應多個y值。如要展示x和y的一對一函數(shù)關系應使用7.3節(jié)介紹的relplot()命令。catplot命令還支持kind='swarm'型散點圖,并支持col等多子圖參數(shù)。如下命令中col='smoker'參數(shù)將數(shù)據(jù)分為吸煙和不吸煙兩列子圖,更便于分類觀察。如將參數(shù)換成

row='smoker'則得到分行子圖。sns.catplot(x="day",y="tip",kind="swarm",col="smoker",data=tips) #swarm型散點圖,分列多子圖二、分類散點圖圖中可見星期六/日的散點數(shù)明顯比星期四/五多,小費金額也高一些。星期六有幾筆小費金額最高。上面命令繪圖時,"smoker=Yes"子圖排在前面。如果想將"smoker=No"子圖排在前面,可加入col_order參數(shù)指定分列時的子圖順序。圖略,見代碼文件。sns.catplot(x="day",y="tip",kind='swarm',col='smoker',col_order=["No","Yes"],data=tips)#指定列序二、分類散點圖下面命令中order=["No","Yes"]指定在x軸上"No"非吸煙類數(shù)據(jù)排在前面。sns.catplot(x="smoker",y="tip",order=["No","Yes"],data=tips) #order指定x軸數(shù)據(jù)順序g=sns.catplot(x="total_bill",y="day",kind="swarm",data=tips)#橫向散點圖print(type(g.ax)) #輸出信息<class'matplotlib.axes._axes.Axes''>ax=g.ax #g.ax對應當前子圖對象axesax.set_title('橫向散點圖示例',fontsize=16) #設置titleax.set_yticklabels(['星期四','星期五','星期六','星期日']) #設置y軸刻度標簽有時可將命令中的x/y參數(shù)互換,將類別列指定為y軸以繪制出橫向散點圖,尤其適用于類別名稱較長或類別數(shù)較多的情況。catplot()這類figure-level圖級函數(shù)不能直接設定圖形大小,只能設定子圖的高度height和寬高比aspect,繪圖時將根據(jù)子圖數(shù)量自動設定圖形大小。繪制后,各子圖之間的間距還可用如下指令調整。sns.catplot(x="day",y="tip",col='smoker',row='time',data=tips,height=2,aspect=0.8)plt.subplots_adjust(wspace=0.5,hspace=0.3) #調整子圖間水平和垂直間距,圖略二、分類散點圖上例中ax=ax參數(shù)指定stripplot()在已設定大小的ax上繪圖,該參數(shù)僅適用軸級函數(shù),對圖級函數(shù)無效。如要精確控制圖形大小,可將plt和axes-level軸級函數(shù)配合,如下所示。fig,ax=plt.subplots(figsize=(6,4)) #設定圖形大小,圖略sns.stripplot(x="day",y="tip",data=tips,ax=ax) #ax=ax,指定stripplot()在此ax上繪圖另一種設置圖形默認大小的方式是使用sns.set()命令,如下所示。設置后,plt函數(shù)和單獨的軸級函數(shù)的圖形尺寸以此設置為默認值。sns.set(rc={"figure.figsize":(6,4)}) #設置圖形默認大小,影響axes-level級函數(shù)和plt函數(shù)catplot()支持兩種箱線圖,參數(shù)kind='box'繪制普通箱線圖,調用boxplot()命令完成。參數(shù)kind='boxen'繪制增強箱線圖,調用boxenplot()命令完成。sns.catplot(x="day",y="tip",kind='box',data=tips,height=4,aspect=1.2,palette='Set1')#左圖,箱線圖sns.catplot(x="day",y="tip",kind='boxen',data=tips,height=4,aspect=1.2) #右圖,增強箱線圖三、分類箱線圖和小提琴圖指令中x='day'將數(shù)據(jù)在x軸上按星期幾分為4類。普通箱線圖標注25%,50%,75%三個分位點,增強型箱線圖在兩端擴展,標注1/8、1/16、1/32等更多分位點,適合大數(shù)據(jù)集。設置kind='violin'參數(shù)可將箱線圖和核概率密度圖結合起來,構成小提琴圖。小提琴圖內部的細的黑色柱體是原來的箱體,中間的白點是中位數(shù),外側的曲線是概率密度曲線,兩側曲線是對稱的。整個圖形比較寬的區(qū)域表示此區(qū)域數(shù)據(jù)較密集,較窄的區(qū)域表示數(shù)據(jù)較稀疏。sns.catplot(x="day",y="tip",kind='violin',hue='smoker',data=tips,height=4,aspect=1.2)#小提琴圖三、分類箱線圖和小提琴圖命令中如添加split=True參數(shù),則將每個小提琴分為兩半,左側顯示吸煙者核密度曲線,右側顯示非吸煙者核密度曲線,以更好地對比兩者的密度分布。如上面右圖所示。catplot()命令中參數(shù)kind='bar'繪制條形圖,調用barplot()命令完成。g=sns.catplot(x="sex",y="survived",hue="class",kind="bar",data=tit,height=4,aspect=1.2,ci=None)ax=g.ax #返回當前子圖forpinax.patches: #遍歷圖中所有條形,ha:水平居中,va:垂直底部對齊,'%.2f'2位小數(shù)

ax.text(p.get_x()+p.get_width()/2,p.get_height(),'%.2f'%p.get_height(),fontsize=12,color='blue',ha='center',va='bottom') #在條形上端標注數(shù)值ax.set_title('sex-pclasssurviedrate',fontsize=16)四、分類條形圖上例計算并標注了每類客艙中男性/女性的平均生還率。先遍歷ax.patches得到每個條形對象p,通過p.get_x()和p.get_height()得到每個條的x軸位置和y軸高度(y數(shù)值),再使用ax.text()將數(shù)值標注在條的頂部,p.get_x()+p.get_width()/2調整標注的x位置。相關計算和統(tǒng)計工作由Seaborn自動完成,由此見Seaborn特別適合統(tǒng)計類數(shù)據(jù)繪圖。同時,應將Seaborn和Matplotlib配合以實現(xiàn)更精準的圖形控制。將上面命令的參數(shù)改為kind='count',并刪除y參數(shù),可繪制計數(shù)條形圖,統(tǒng)計每類客艙男女生還人數(shù)。g=sns.catplot(x="sex",hue="class",kind="count",data=tit,height=4,aspect=1.2,ci=None)ax=g.axforpinax.patches: #遍歷圖中所有條形,ax.text(x坐標,y坐標,y值,字號,顏色,…)ax.text(p.get_x()+p.get_width()/2,p.get_height(),p.get_height(),fontsize=12,color='blue',ha='center',va='bottom')ax.set_title('sex-pclasscount',fontsize=16) 四、分類條形圖增加col='survived'參數(shù)則可分開統(tǒng)計每類客艙中男性/女性生還和未生還的人數(shù)。g=sns.catplot(x="sex",hue="class",kind="count",col='survived',data=tit,ci=None)forindex,axinenumerate(g.axes.ravel()): #ravel()將g.axes二維數(shù)組轉為一維數(shù)組

ifindex==0:c='blue' #"生還"藍色

title='Survived'else:c='red' #"未生還"紅色

title='Notsurvived'forpinax.patches:#在條形頂端標注數(shù)值ax.text(p.get_x()+p.get_width()/2,p.get_height(),p.get_height(),fontsize=14,color=c,ha='center',va='bottom')ax.set_title(title,fontsize=16) 四、分類條形圖catplot()命令參數(shù)kind='point'繪制點圖,調用pointplot()命令完成。g=sns.catplot(x="sex",y="survived",hue="class",kind="point",data=tit,height=4,aspect=1.5)ax=g.axforindexin[0,2]: #只標注第0和第2根線。為避免數(shù)據(jù)覆蓋,未標注第1根線

c=ax.collections[index] #ax.collections屬性包含所有的線,按index序號取某根線

forpinc.get_offsets(): #每根線含首/尾兩點,遍歷時p代表一個點的(x,y)坐標

ax.annotate("%.2f"%p[1],(p[0]-0.15,p[1]))#p[0]:x坐標,p[1]:y坐標五、分類點圖點圖可反映數(shù)據(jù)在不同類別中的均值變化情況。右圖按x="sex"分為兩個大類,每類又按hue="class"分為3個小類,y="survived"參數(shù)將計算各類別的平均生還率。最上方的藍色線(第0根)表示1類客艙中平均生還率由男性對應值0.37躍升到女性對應值0.97,中間的棕黃色線表示2類客艙中平均生還率由男性對應值0.14左右躍升到女性對應值0.9左右。點圖體現(xiàn)了按sex和class分類后,每類數(shù)據(jù)的均值變化。本節(jié)討論可視化數(shù)據(jù)集中的兩個或多個變量間的相互關系。數(shù)據(jù)是紛繁復雜的,我們希望借助圖形給出的提示幫助我們快速理清數(shù)據(jù)之間的關聯(lián)(relevant)。本節(jié)介紹另一個常用的圖級命令relplot(),其通過設定如下kind參數(shù)完成繪圖。本節(jié)代碼見"07.3.ipynb"文件。第3節(jié)

可視化統(tǒng)計關系kind="scatter":默認類型散點圖,調用sns.scatterplot()完成kind="line":折線圖,調用sns.lineplot()完成relplot()是一條圖級命令,用于反映數(shù)據(jù)間的相關關系。下面繪制賬單額和小費額散點圖。tips=sns.load_dataset("tips",data_home='./seaborndata')sns.relplot(x="total_bill",y="tip",data=tips,kind="scatter",height=4,aspect=1.2) 一、relplot散點圖圖中可見小費額密集的區(qū)域在(2,4)之間,圖形右上角的大額小費筆數(shù)很少。隨著賬單額的增加,小費的總體趨勢也是增加的,兩者是一種正相關關系。此散點圖不同于7.2節(jié)的分類散點圖,此散點圖體現(xiàn)的是x和y之間一對一的關系。x='total_bill'有很多不同取值,此處的x不是類別數(shù)據(jù)。7.2節(jié)catplot()命令中的x和y是一對多關系,x是類別。實際使用時,這兩種散點圖應選擇適用的場景。relplot()是一條功能強大的繪圖命令,可對散點進行語義顏色、標記符號和大小的映射,體現(xiàn)出數(shù)據(jù)之間復雜的關聯(lián)。執(zhí)行下面的語句。sns.relplot(x="total_bill",y="tip",hue="smoker",style="sex",size="size",sizes=(60,120),col="time",data=tips)一、relplot散點圖參數(shù)col="time"將數(shù)據(jù)分為午餐和晚餐2個子圖,hue="smoker"將是否吸煙用兩種顏色區(qū)分,style="sex"將男性和女性的點用不同形狀區(qū)分,size="size"按就餐人數(shù)映射為不同大小的點,再加上x和y屬性,上圖中的每個點可以從6個屬性進行區(qū)分。繪圖時只需指定列名即可,不需要類似Matplotlib還要編碼實現(xiàn)。與之對比,7.2節(jié)介紹的catplot()命令不支持style和size參數(shù)。relplot()是figure-level圖級函數(shù),支持col和row等子圖參數(shù)。sns.relplot(x="total_bill",y="tip",col="day",col_wrap=2,data=tips,height=3) #左圖sns.relplot(x="total_bill",y="tip",col="time",row="smoker",data=tips,height=3) #右圖一、relplot散點圖左圖設置col="day"參數(shù),星期四至星期日共4類,col_wrap=2參數(shù)指定每行2個子圖,所以繪制出2行2列的子圖。右圖設置了col="time"和row="smoker",分別都是2種,因此也產生2行2列的子圖。relplot()命令參數(shù)kind='line'繪制折線圖,調用sns.lineplot()命令完成。折線圖適合反映數(shù)據(jù)在某段時間或某個序列中的連續(xù)變化。x=np.linspace(-2*np.pi,2*np.pi,100)df=pd.DataFrame({'x':x,'y':np.sin(x)})sns.relplot(x='x',y='y',data=df,kind='line') #kind='line'折線圖#sns.lineplot(x='x',y='y',data=df) #效果同上,使用軸級函數(shù)sns.lineplot()二、relplot折線圖np.random.seed(7) x=np.repeat(np.arange(40),20) #產生000..111…393939序列a=np.random.uniform(9.1,9.7,size=x.size) #A產品數(shù)據(jù)b=np.random.uniform(8.5,9.2,size=x.size)#B產品數(shù)據(jù)pid=['A']*x.size+['B']*x.size #產品類型AAA…BBBdf=pd.DataFrame({'x':np.concatenate((x,x)),'y':np.concatenate((a,b)),'pid':pid})#df含xypid三列

sns.relplot(x='x',y='y',hue='pid',data=df,kind='line',height=4,aspect=2)二、relplot折線圖上面指令通過hue='pid'語義將數(shù)據(jù)分為A/B兩組。每種產品每天的數(shù)據(jù)有20個,sns自動計算每天的數(shù)據(jù)均值,此處的折線實際上由數(shù)據(jù)的均值點構成。折線兩側的陰影表示的是均值在95%置信區(qū)間的取值范圍。上頁代碼中x和y是一對一關系,這種簡單折線圖還無法體現(xiàn)Seaborn折線圖的特色。日常很多統(tǒng)計和實驗數(shù)據(jù)中x和y是一對多的關系。例如連續(xù)若干天的實驗數(shù)據(jù),而每天的實驗數(shù)據(jù)又包含多個觀測值。下面模擬一個實驗數(shù)據(jù)集,包含A、B兩種產品,每個產品含40天數(shù)據(jù),每天數(shù)據(jù)由20個隨機值構成。Seaborn數(shù)據(jù)集一般應為長(long)數(shù)據(jù)集,有的書中也稱為整潔(tidy)格式,不應采用寬(wide)格式。例如上面的實驗數(shù)據(jù),A和B的數(shù)據(jù)應縱向連接,而不應橫向連接。數(shù)據(jù)列應組織為['x','y','pid']的形式,而不應組織為['x','A','B']的形式。長格式才便于指定hue、style、col和row等分類參數(shù)。繪圖時,寬數(shù)據(jù)集可使用Pandas的melt命令轉換為長數(shù)據(jù)集,如下所示。三、長-寬數(shù)據(jù)集np.random.seed(7) x=np.repeat(np.arange(40),20) #產生000..111…393939序列a=np.random.uniform(9.1,9.7,size=x.size) #A數(shù)據(jù)b=np.random.uniform(8.5,9.2,size=x.size) #B數(shù)據(jù)dfw=pd.DataFrame({'x':x,'A':a,'B':b}) #dfw是寬數(shù)據(jù)集,有'x','A','B'三列df2=pd.melt(dfw,id_vars=['x'],value_vars=['A','B'],var_name='pid',value_name='y')#轉為長數(shù)據(jù)集

pd.melt命令中,id_vars參數(shù)對應數(shù)據(jù)集中不需要轉換的列,value_vars參數(shù)對應需要轉換的列,var_name是轉換后的類型列的新列名,value_name是轉換后數(shù)值列的新列名。寬轉長時,將要轉換的列依次取出,以“不轉換的列的值+轉換列的列名+轉換列的值”的形式構成新的一行,在縱向不斷插入新行。dfw原有800行數(shù)據(jù),轉為長格式df2后有1600行數(shù)據(jù)。反映變量的分布情況是統(tǒng)計數(shù)據(jù)繪圖中很重要的一類可視化任務。本節(jié)代碼見"07.4.ipynb"文件。第4節(jié)

可視化變量分布一、distplot單變量分布單變量分布聚焦于考察一個變量的分布(distribution)情況,前面章節(jié)介紹的plt.hist()命令繪制單變量分布直方圖。在Seaborn中,使用distplot()命令可視化單變量分布,參數(shù)如下表所示。參數(shù)名描

述參數(shù)名描

述a單變量數(shù)據(jù)序列fit_kws密度曲線字典參數(shù)bins直方圖分組數(shù)(整數(shù))color顏色hist默認值True,顯示直方圖vertical默認值False,變量值在x軸上kde默認值True,顯示密度曲線norm_histTrue時直方圖顯示頻率而不是頻數(shù)rug默認值False,不顯示地毯圖axlabelx軸標簽(如為False則不顯示)hist_kws直方圖字典參數(shù)label圖例字符串rug_kws地毯圖字典參數(shù)ax指定繪制在某個axes上下面考察tips數(shù)據(jù)集中tip列的分布情況。distplot()默認顯示hist直方圖和kde核密度曲線,如設置rug=True參數(shù),還將在底部軸線上顯示地毯圖,如下圖所示。圖形顯示小費數(shù)據(jù)主要集中在(2,4)區(qū)間段,(8,10)區(qū)間的高額小費很少。注:本教材付印時distplot命令在新版seaborn中將逐步廢棄,不推薦使用。推薦使用displot()這一圖級函數(shù)。一、distplot單變量分布tips=sns.load_dataset('tips',data_home='./seaborndata')sns.distplot(a=tips.tip,rug=True)#默認會顯示hist和kde,rug=True增加地毯圖顯示

底部軸線上的地毯圖小黑線標注了數(shù)據(jù)出現(xiàn)的位置,線條的密度表現(xiàn)了該區(qū)域數(shù)據(jù)的密集程度。圖形中的直方圖和密度曲線可分別通過hist和kde參數(shù)控制是否顯示。如設置kde=False則不顯示密度曲線,此時y軸也變?yōu)轭l數(shù),而不是頻率。distplot()是一個axes-level軸級函數(shù),用于繪制單變量分布,因此沒有x、y和data參數(shù)。數(shù)據(jù)參數(shù)只有一個a參數(shù),傳入一個數(shù)組。直方圖還可通過bins參數(shù)設定分組的數(shù)目。繪制單變量概率密度曲線還可使用kdeplot()命令,該命令只繪制密度曲線,不繪制直方圖,但包含很多密度曲線的調整參數(shù)。sns.kdeplot(tips.tip,shade=True) #shade=True密度曲線下面填充陰影,左圖sns.kdeplot(tips.tip,cumulative=True) #cumulative=True累積密度曲線,右圖一、distplot單變量分布雙變量分布考察兩個變量間的概率密度分布關系,例如廣告費和銷售額的關系,身高和體重的關系??梢暬p變量分布可使用kdeplot()命令(kerneldensityestimation核密度估計),常用參數(shù)如下表所示。二、kdeplot雙變量分布參數(shù)名描

述參數(shù)名描

述x第1個變量序列l(wèi)abel圖例y第2個變量序列color密度曲線顏色shadeFalse,不顯示填充陰影l(fā)egend默認值True,顯示圖例verticalFalse,單變量時數(shù)值對應在x軸上cumulative默認False,不累計密度曲線(適用單變量)kernel密度曲線核(默認高斯核gau)cbarFalse,雙變量時設為True顯示顏色映射條bw密度曲線帶寬cbar_kwscbar字典參數(shù)n_levels等高線圖的輪廓數(shù)(適用雙變量)ax繪制在某個axes上kdeplot()命令如只提供一個數(shù)值序列則繪制單變量分布(如7.4.1節(jié)所示),提供兩個數(shù)值序列則繪制雙變量分布。上面的參數(shù)表要注意區(qū)分是針對單變量還是雙變量。注意,新的0.12版中該命令的形參名是x和y,舊版中的形參名是data和data2,不兼容。雙變量概率密度曲線繪制的結果是一個等高線圖,等高線的中心區(qū)域是兩個變量聯(lián)合概率密度分布最密集的區(qū)域,越往外側則密度越低。下面左圖反映單筆賬單金額注意集中在(8,20)區(qū)域,單筆小費集中在(1.5,4)區(qū)域。二、kdeplot雙變量分布tips=sns.load_dataset('tips',data_home='./seaborndata')sns.kdeplot(data=tips,x='total_bill',y='tip')#左圖,賬單額和小費額聯(lián)合分布sns.kdeplot(data=tips,x='total_bill',y='tip',shade=True,cbar=True)#右圖,陰影并顯示顏色映射條

繪雙變量圖時如設置shade=True添加陰影,此時就變成類似熱力圖的形式,通過顏色深淺反映密度值。雙變量分布可視化的另一常用命令是jointplot(),命令參數(shù)如下表所示。三、jointplot雙變量分布參數(shù)名描

述參數(shù)名描

述x/y兩個變量序列(字符串或數(shù)組形式)kwargs繪圖字典參數(shù)data可選參數(shù),應為DataFramecolor顏色kind圖形類型(scatter/kde/hex/reg/resid)dropna如為True則移除x和y中的缺失值height圖形高度(此圖為正方形)space中心和側邊軸的間隔(浮點數(shù))ratio中心軸高度與側邊軸高度之比(小數(shù))

jointplot()默認將繪制兩個變量的散點圖和各自的直方圖,并將三個圖形結合在一起,如下圖所示。圖形中間是散點圖,上側是x變量直方圖,右側是y變量直方圖。該命令不是圖級函數(shù),也不是軸級函數(shù),繪圖后返回的對象類型是seaborn.axisgrid.JointGrid。三、jointplot雙變量分布g=sns.jointplot(x='total_bill',y='tip',data=tips)print(type(g)) #返回的對象類型是<class'seaborn.axisgrid.JointGrid'>jointplot()命令支持5種kind,默認值kind="scatter"表示中間的圖形繪制散點圖。kind='kde'繪制等高線密度曲線,kind='hex'繪制六邊型密度圖,kind='reg'繪制回歸線圖,kind='resid'繪制殘差圖。kind='kde'繪制等高線密度曲線。如果圖中的散點很密集,此時可選擇kind='hex'六邊形圖。這種圖是直方圖的一種變體,在圖中劃分六邊形,計算落入其中的散點數(shù)目,點數(shù)越多顏色越深。三、jointplot雙變量分布sns.jointplot(x='total_bill',y='tip',kind='kde',data=tips)#kind='kde'繪制密度曲線,左圖sns.jointplot(x='total_bill',y='tip',kind='hex',data=tips)#hex六邊形圖,右圖因為賬單金額total_bill和小費tip很明顯有正相關關系,通過kind='reg'參數(shù)可繪制一條線性回歸直線。三、jointplot雙變量分布sns.jointplot(x='total_bill',y='tip',kind='reg',data=tips)#kind='reg'回歸線圖,左圖sns.jointplot(x='total_bill',y='tip',kind='resid',data=tips)#kind='resid'殘差圖,右圖設置kind='resid'可繪制出在此回歸線下的殘差,即回歸值和真實值之間的差值,如右圖所示。殘差圖中的y軸不再是小費,而是誤差值。圖中間是代表誤差值為0的細線,圖左側可見小額賬單和小費對應的誤差值較小,距離0線較近;圖右側區(qū)域大額賬單和小費對應的誤差值較大,偏離0線較多,說明這條回歸直線在賬單金額較小時預測較好,但大額情況下表現(xiàn)較差。前面小節(jié)繪制了一對數(shù)據(jù)的可視化圖形,如果有多對數(shù)據(jù)要交叉比較,可使用pairplot()命令。下面以鳶尾花iris數(shù)據(jù)集為例,該數(shù)據(jù)集有150條記錄,共三種鳶尾花。每條數(shù)據(jù)包含花萼(sepal)長度、寬度,花瓣(petal)長度、寬度4個特征值,加上花的類型共5個數(shù)據(jù)項?,F(xiàn)在將花的4個特征值兩兩成對比較。四、pairplot繪制數(shù)據(jù)集成對關系iris=sns.load_dataset('iris',data_home='./seaborndata') sns.pairplot(iris,hue='species',markers=["^","v","o"])#散點圖矩陣4個特征值列,兩兩比較,產生16個子圖。對角線上是某個特征值和自己比較,同時又加入了hue='species'語義,因此對角線上就繪制每個特征值三類花的密度曲線。非對角線上的子圖就繪制某特征值和另外三個特征值兩兩配對的散點圖。markers=["^","v","o"]參數(shù)為三類花指定不同的散點形狀。圖中藍色點(上三角形)代表的setosa類花和另外兩種花基本可以區(qū)分開。另兩種花中大部分的點可以區(qū)分,但有少量點混雜在一起。這樣的圖可快速選擇最相關的特征或供機器學習輔助選擇適合的特征值?;貧w分析(regressionanalysis)是數(shù)據(jù)分析中的一種重要方法,回歸分析試圖找出自變量和因變量之間的函數(shù)關系。Seaborn提供了regplot()和lmplot()兩個命令來解決回歸分析的可視化問題。其中,前者是軸級函數(shù),后者是圖級函數(shù)。五、回歸分析tips=sns.load_dataset("tips",data_home='./seaborndata')sns.regplot(x="total_bill",y="tip",data=tips)#賬單額和小費間的回歸分析左圖中繪制了一條回歸直線,反映賬單金額和小費之間的回歸關系。直線兩側的陰影表示此回歸方程下y的95%置信區(qū)間范圍,即均值有95%概率落在該區(qū)間內。下面再以統(tǒng)計學中有名的anscombe四重奏數(shù)據(jù)集為例繼續(xù)討論回歸分析。該數(shù)據(jù)集含4組數(shù)據(jù),每組11條,每組中的x和y值不盡相同,但通過精心構造,這4組數(shù)據(jù)x和y的均值和標準差均相同。五、回歸分析anscombe=sns.load_dataset('anscombe',data_home='./seaborndata')#四重奏數(shù)據(jù)集sns.lmplot(x='x',y='y',data=anscombe,col='dataset',col_wrap=2,height=3,aspect=1.2)數(shù)據(jù)集4組數(shù)據(jù)的組編號為I、II、III和IV。regplot()是軸級函數(shù),不能設置col參數(shù),無法自動分類。要同時分組畫出四類數(shù)據(jù)集,可選擇lmplot()這個圖級函數(shù)。該示例表明在研究數(shù)據(jù)時不可盡信統(tǒng)計值,這4組數(shù)據(jù)雖然均值和標準差一樣,但實際上差別巨大,這個例子也說明了數(shù)據(jù)可視化的重要性。(見下頁)至此,我們學習了catplot、relplot和lmplot這三條圖級命令。掌握這三條命令并配合kind參數(shù),繪圖將非??旖?。新版seaborn中又增加了displot()這一圖級函數(shù)。#檢查每組的均值和標準差是否相同,applymap保留2位小數(shù)anscombe.groupby('dataset').agg([('均值',np.mean),('標準差',np.var)]).applymap(lambdax:'%.2f'%x)下面左圖可見四組數(shù)據(jù)明顯不同。第I組數(shù)據(jù)點比較均勻地分布在回歸直線兩側,回歸效果較好。第II組數(shù)據(jù)點明顯對應二次曲線,但用線性一次回歸,效果很差。第III組最上方有一個離群點,該點導致回歸直線向上偏移。第IV組數(shù)據(jù)10個點的x值相同,只有一個點的x值不同,因為x值相同,該組數(shù)據(jù)不適用回歸分析。第II組數(shù)據(jù)從散點圖上看是二次曲線,可增加order=2的參數(shù)按二次曲線回歸。第III組數(shù)據(jù)有一個異常點,導致回歸直線向上偏移,設置robust=True和ci=None參數(shù),表示采用健壯回歸,回歸時剔除異常值的影響。五、回歸分析sns.regplot(x='x',y='y',data=anscombe.query('dataset=="II"'),order=2,label='dataIIorder=2')#中圖,二次曲線sns.regplot(x='x',y='y',data=anscombe.query('dataset=="III"'),robust=True,ci=None)#右圖,健壯回歸本節(jié)介紹sns中使用調色版、顏色和熱力圖等命令。本節(jié)代碼見"07.5.ipynb"文件。第5節(jié)

其他方法一、設置調色板Seaborn提供了一系列的顏色管理工具幫助使用者選擇最優(yōu)的配色方案。color_palette()用于生成調色板。參數(shù)palette是配色方案名或其它顏色表達形式。n_colors指定調色板中的顏色數(shù)目,默認值6。desat和色彩飽和度有關,取值范圍0~1,默認值1對應的顏色最深。不提供參數(shù)時,該函數(shù)返回當前調色板。pal=sns.color_palette(palette=None,n_colors=None,desat=None)#生成調色板palplot()顯示調色板,參數(shù)pal是要顯示的調色板對象,size是色塊大小。sns.palplot(pal,size=1)#顯示調色版set_palette()將palette設置為當前調色板,設置后所有的繪圖命令都受此調色板的影響。sns.set_palette(palette,n_colors=None,desat=None)#將palette設為當前使用的調色板一、設置調色板下面輸出觀察默認調色板。sns.set() #此時默認主題為darkgrid,默認調色板為deepcur_palette=sns.color_palette() #color_palette()不帶參數(shù)時,返回當前調色板deepprint(cur_palette) #調色板其實是由RGB元組構成的列表sns.palplot(cur_palette) #顯示deep調色板,有10種顏色如果使用plt命令繪制多根線條,不指定線條顏色,則各線條顏色就從默認調色板中依次選擇。plt和Seaborn的顏色都受當前調色板的控制。調色板內容較多,請讀者在jupyternotebook中運行本節(jié)配套的示例代碼。dfa=pd.DataFrame({'x':range(1,11),'y':range(4,14)})#共10個數(shù)sns.barplot(x='x',y='y',data=dfa) #10個條形默認選用當前調色板中的10種顏色

如繪圖時所需顏色超過默認的10種且未指定調色板,此時Seaborn會棄用當前調色板,自動選用一種漸變調色板以區(qū)分眾多的條形。一、設置調色板調色板可以先用color_palette()函數(shù)創(chuàng)建,然后在繪圖命令中引用,也可用set_palette()命令設置為全局調色板,示例如下。pal=sns.color_palette("Blues",6) #自定義含6個漸變色(由淺到深)的Blues調色板palsns.barplot(x='x',y='y',data=dfa,palette=pal)#引用pal調色板,dfa數(shù)據(jù)框見上頁定義。下圖所示sns.set_palette(pal) #設置pal為全局調色板plt.plot([1,2],[3,4],[2,2],[3,5]) #繪2根線條,顏色受pal調色板控制。圖略一、設置調色板Seaborn預定義了140余種配色方案(在配套代碼文件中已列出),同時還支持RGB顏色和HTML網(wǎng)頁顏色。常用的調色板配色方案有:Set1、Set2、Set3、cool、spring、summer、autumn、winter、Blues、Greens、Oranges、cubehelix、Paired、gnuplot2、hls、husl、deep和bright等。在官方文檔中,將調色板大致分為三類:分類型(qualitative)、順序型(sequential)和發(fā)散型(diverging)。palstyle=['deep','muted','pastel','bright','dark','colorblind'] #輸出6個默認分類調色板forpalinpalstyle:print(pal)sns.palplot(sns.color_palette(pal))(一)分類型調色板當數(shù)據(jù)沒有明顯地主次或重點非重點區(qū)分時,適合使用分類型調色板。例如tips中的吸煙和非吸煙者、午餐和晚餐,鳶尾花中的三類花等。分類色板只需用對比鮮明的顏色將數(shù)據(jù)區(qū)分開即可。1.6個默認的分類調色板上述6個調色板每個包含10種顏色。每次執(zhí)行sns.set_style()切換主題后,默認的調色板會重設為deep。deep色板較深,pastel色板飽和度較低,bright顏色最亮,colorblind對色弱人士最友好。一、設置調色板pal=sns.color_palette("hls",15,desat=.9) #.9代表0.9飽和度,15種sns.palplot(pal)2.hls和husl分類調色板另一種常用的分類色板是hls,這是一種簡單的RGB顏色變體。上面的命令創(chuàng)建并顯示了內含15種顏色的hls色板。desat是飽和度,取值0~1,默認值1對應顏色最深。顏色設置中"0.9"常簡寫為".9"。hls的意思就是色度、亮度和飽和度。Seaborn還提供了一個husl色板,使顏色、亮度和飽和度的間隔更加均勻,如下所示。pal=sns.palplot(sns.color_palette("husl",8))#husl色板

sns.palplot(pal)一、設置調色板sns.set_style('ticks',rc={'font.sans-serif':'Simhei'})city=pd.DataFrame({'城市':['株洲','長沙','洛陽','鄭州','珠海','廣州'],'數(shù)值':range(10,16)})pal=sns.color_palette("Paired",6) #用Paired配對色板生成含3對6個顏色值的色板sns.barplot(x='城市',y='數(shù)值',data=city,palette=pal) #指定pal調色板3.Paired配對調色板分類色板中還有一種Paired配對色板,用來強調一對一對的數(shù)據(jù)。例如現(xiàn)有6個城市,每2個城市來自同一個省。下圖中來自同一省份的2個城市會用同一色系的深淺兩種顏色繪制,體現(xiàn)城市之間的內在關聯(lián)。一、設置調色板palstyle=['cool','spring','summer'] #三種預定義的順序調色板forpalinpalstyle:print(pal)sns.palplot(sns.color_palette(pal))#每個調色板內含6種顏色(二)順序型調色板當要展示的數(shù)據(jù)有主次或重點非重點區(qū)分時,適合使用順序調色板。該類調色板一般色調變化幅度較小,但亮度和飽和度變化較大,生成同一色系或相近色系由明到暗或由暗到明的顏色,適合對應數(shù)據(jù)由不重要到重要的變化,將人們的注意力自然吸引到數(shù)據(jù)中相對重要的部分。例如等高線密度曲線圖的中心使用深色,邊緣使用淺色以體現(xiàn)密度變化。表示疫情數(shù)據(jù)時,嚴重的地區(qū)用深色表示,不嚴重的地區(qū)用淺色表示。更多內容詳見配套代碼文件。一、設置調色板sns.palplot(sns.color_palette("BrBG",7)) #兩個發(fā)散型調色板,顏色數(shù)一般為奇數(shù)sns.palplot(sns.color_palette("RdBu",7)) (三)發(fā)散型調色板當數(shù)據(jù)集的低值和高值都很重要,且數(shù)據(jù)集有明確定義的中心點時,可選擇使用發(fā)散型調色板。此類調色板的中間顏色最淡(深),向兩端顏色逐漸加深(變淺),兩端的顏色具有相似的亮度和飽和度。例如,使用此類調色板可以很好地展示溫度相對于基準溫度0的上升或下降。二、set_context設置上下文參數(shù)sns.set_context() #省略參數(shù)時默認上下文是notebooksns.set_context("talk") #設為talk,文字和線條默認是notebook的1.3倍sns.set_context("poster") #設為poster,文字和線條默認是notebook的1.6倍

Seaborn除了主題設置,還有一個set_context()函數(shù)用于設置繪圖的上下文參數(shù),可設置的值只有4種:notebook、paper、talk和poster,示例如下。上下文參數(shù)影響軸上的刻度標簽、軸標簽、線條等圖形元素的大小,但不影響主題樣式。默認為"notebook",設置為"paper"、"talk"和"poster"參數(shù)時,其文本大小和線條粗細默認是notebook狀態(tài)下的0.8、1.3和1.6倍。每次執(zhí)行sns.set_style()切換主題時,上下文參數(shù)自動重設為默認值notebook。下面的代碼演示了在不同上下文參數(shù)下,同樣代碼所繪制圖形的差異。sns.set() #默認上下文為notebooksns.lineplot(x=[1,2],y=[3,4],label='y=x') #圖略plt.figure()sns.set_context('poster') #圖略,設為poster,字體最大,線條最粗sns.lineplot(x=[1,2],y=[3,4],label='y=x')plt.figure()sns.set_context('paper') #圖略,設為paper,字體最小,線條最細sns.lineplot(x=[1,2],y=[3,4],label='y=x') 二、set_context設置上下文參數(shù)前面小節(jié)中已出現(xiàn)了多條設置命令,例如set_style()、set_palette()和set_context(),這些命令都可以統(tǒng)一到sns.set()命令中,如下所示。注:新版seaborn將sns.set改名為sns.set_theme。sns.set_style("ticks") #選擇主題sns.set_palette('Set2') #選擇調色板sns.set_context("notebook") #選擇上下文參數(shù)sns.set(style="ticks",context="notebook",palette="Set2") #效果同上面三條指令三、Facetgrid多子圖命令tips=sns.load_dataset("tips",data_home='./seaborndata')g=sns.FacetGrid(data=tips,col="time",row="smoker",height=3)#先生成一個FacetGrid對象gg.map(sns.kdeplot,'total_bill','tip')#然后g.map再調用kdeplot,在子圖內繪制密度曲線前面介紹sns命令分為figure-l

溫馨提示

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

評論

0/150

提交評論