Seaborn常用绘图函数-sjs
Seaborn常用繪圖函數(shù)
- 介紹
- 主題風(fēng)格
- 函數(shù)
- 參考
- 備注
介紹
seaborn是基于Matplotlib的Python數(shù)據(jù)可視化庫(kù)。它提供了一個(gè)高級(jí)界面,用于繪制引人入勝且內(nèi)容豐富的統(tǒng)計(jì)圖形,在Matplotlib上進(jìn)行了更高級(jí)的API封裝,從而使作圖更加容易
主題風(fēng)格
sns.set_style("whitegrid") 橫坐標(biāo)有標(biāo)線,縱坐標(biāo)沒有標(biāo)線,背景白色 sns.set_style("darkgrid") 默認(rèn),橫縱坐標(biāo)都有標(biāo)線,組成一個(gè)一個(gè)格子,背景稍微深色 sns.set_style("dark") 背景稍微深色,沒有標(biāo)線線 sns.set_style("white") 背景白色,沒有標(biāo)線線 sns.set_style("ticks") xy軸都有非常短的小刻度 sns.despine(offset=30,left=True) 去掉上邊和右邊的軸線,offset=30表示距離軸線(x軸)的距離,left=True表示左邊的軸保留函數(shù)
(1): 單變量分布圖 - sns.distplot
sns.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None)參數(shù)解讀
- bins:int或list,控制直方圖的劃分
- 通過(guò)hist和kde參數(shù)調(diào)節(jié)是否顯示直方圖及核密度估計(jì)(默認(rèn)hist,kde均為True)
- rug:控制是否生成觀測(cè)數(shù)值的小細(xì)條
- fit:控制擬合的參數(shù)分布圖形,能夠直觀地評(píng)估它與觀察數(shù)據(jù)的對(duì)應(yīng)關(guān)系(黑色線條為確定的分布)
- vertical=True,color=“y”:控制圖像的橫豎擺放,圖中顏色顯示
- norm_hist:若為True, 則直方圖高度顯示密度而非計(jì)數(shù)(含有kde圖像中默認(rèn)為True)
內(nèi)容解讀:
- sns.distplot(x) 對(duì)單變量X直接繪制出直方圖,并繪制概率擬合曲線
- Y軸代表概率密度
- 每個(gè)柱子的面積代表概率,面積和=1
- distplot支持3種格式數(shù)據(jù):pandas.series、numpy中的1darray以及普通的list類型
================================================================
(2):雙變量分布圖 散點(diǎn)圖 - serborn.jointplot
serborn.jointplot(x,y,data=None,kind=“scatter”,color=None,size=6,ratio=5,space=0.2,dropna=True,xlim=None,ylim=None,joint_kws=None,marginal_kws=None,annot_kws=None,**kwargs)參數(shù)解讀:
sns.jointplot(x=df['A'], y=df['B'], #設(shè)置xy軸,顯示columns名稱data = df, #設(shè)置數(shù)據(jù)color = 'b', #設(shè)置顏色s = 50, edgecolor = 'w', linewidth = 1,#設(shè)置散點(diǎn)大小、邊緣顏色及寬度(只針對(duì)scatter)kind = 'scatter',#設(shè)置類型:散點(diǎn)圖'scatter' ,'reg','resid',密度圖'kde',六邊形圖'hex'space = 0.1, #設(shè)置散點(diǎn)圖和布局圖的間距size = 8, #圖表大小(自動(dòng)調(diào)整為正方形))ratio = 5, #散點(diǎn)圖與布局圖高度比,整型marginal_kws = dict(bins=15, rug =True),) #設(shè)置柱狀圖箱數(shù),是否設(shè)置rug舉例:
rs = np.random.RandomState(2) df = pd.DataFrame(rs.randn(200,2), columns = ['A','B']) fig,axes=plt.subplots(3,1) #創(chuàng)建一個(gè)1行2列的圖片sns.jointplot(x=df['A'], y=df['B'], #設(shè)置xy軸,顯示columns名稱data = df, #設(shè)置數(shù)據(jù)color = 'b', #設(shè)置顏色 # s = 50, edgecolor = 'w', linewidth = 1,#設(shè)置散點(diǎn)大小、邊緣顏色及寬度(只針對(duì)scatter) # stat_func=sci.pearsonr,kind = 'hex',#設(shè)置類型:散點(diǎn)圖'scatter' ,'reg','resid',,密度圖'kde',六邊形圖'hex'#stat_func=<function pearsonr>,space = 0.1, #設(shè)置散點(diǎn)圖和布局圖的間距size = 8, #圖表大小(自動(dòng)調(diào)整為正方形))ratio = 5, #散點(diǎn)圖與布局圖高度比,整型marginal_kws = dict(bins=15, rug =True),) #設(shè)置柱狀圖箱數(shù),是否設(shè)置rug rs = np.random.RandomState(2) df = pd.DataFrame(rs.randn(200,2), columns = ['A','B']) fig,axes=plt.subplots(3,1) #創(chuàng)建一個(gè)1行2列的圖片sns.jointplot(x=df['A'], y=df['B'], #設(shè)置xy軸,顯示columns名稱data = df, #設(shè)置數(shù)據(jù)color = 'b', #設(shè)置顏色s = 50, edgecolor = 'w', linewidth = 1,#設(shè)置散點(diǎn)大小、邊緣顏色及寬度(只針對(duì)scatter) # stat_func=sci.pearsonr,kind = 'scatter',#設(shè)置類型:'scatter','reg','resid','kde','hex'#stat_func=<function pearsonr>,space = 0.1, #設(shè)置散點(diǎn)圖和布局圖的間距size = 8, #圖表大小(自動(dòng)調(diào)整為正方形))ratio = 5, #散點(diǎn)圖與布局圖高度比,整型marginal_kws = dict(bins=15, rug =True),) #設(shè)置柱狀圖箱數(shù),是否設(shè)置rug=================================================================
(3):雙變量分布圖 曲線圖 - seaborn.relplot
seaborn.relplot(x=None, y=None, hue=None, size=None, style=None, data=None, row=None, col=None, col_wrap=None, row_order=None, col_order=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None,size_norm=None, markers=None, dashes=None, style_order=None, legend='brief',kind='scatter', height=5, aspect=1, facet_kws=None, **kwargs)參數(shù)解讀:
seaborn.relplot(x=None, y=None, #x, y:data中的變量名 輸入數(shù)據(jù)的變量;數(shù)據(jù)必須為數(shù)值型。hue=None, #將會(huì)產(chǎn)生具有不同顏色的元素的變量進(jìn)行分組。這些變量可以是類別變量或者數(shù)值型變量size=None, #用粗細(xì)表現(xiàn)出分組的不同。可以是分組或數(shù)字(10, 100)style=None, #cue 虛線 stim實(shí)線 也可以是分組data=None, #DataFramerow=None, col=None, #col列分組 row行分組col_wrap=None, #int這個(gè)變量設(shè)置可以將多列包裝以多行的形式展現(xiàn)(有時(shí)太多列展現(xiàn),不便利),但不可以將多行以多列的形式展現(xiàn)。row_order=None,col_order=None, #以此順序組織網(wǎng)格的行和/或列,否則順序?qū)臄?shù)據(jù)對(duì)象中推斷palette=None, #["b", "r"] 列表格式 對(duì)不同分組設(shè)定不同顏色hue_order=None, #列表 指定hue變量層級(jí)出現(xiàn)的順序 否則會(huì)根據(jù)數(shù)據(jù)確定hue_norm=None, #元組或者 Normalize 對(duì)象 sizes=None, #列表、字典或者元組 當(dāng)使用sizes時(shí),用于確定如何選擇尺寸。此變量可以一直是尺寸值的列表或者size變量的字典映射。#當(dāng)size為數(shù)值型時(shí),此變量也可以是指定最小和最大尺寸的元組,這樣可以將其他值標(biāo)準(zhǔn)化到這個(gè)范圍size_order=None, #列表 指定size變量層次的表現(xiàn)順序,不指定則會(huì)通過(guò)數(shù)據(jù)確定。當(dāng)size變量為數(shù)值型時(shí)與此無(wú)關(guān)size_norm=None, #元組或者 Normalize 對(duì)象 當(dāng)size變量為數(shù)值型時(shí),用于數(shù)據(jù)單元的 scaling plot 對(duì)象的標(biāo)準(zhǔn)化legend='brief', #“brief”, “full”, 或者 False, #用于決定如何繪制坐標(biāo)軸。如果參數(shù)值為“brief”, 數(shù)值型的hue以及size變量將會(huì)被用等間隔采樣值表示。#如果參數(shù)值為“full”, 每組都會(huì)在坐標(biāo)軸中被記錄。如果參數(shù)值為“false”, 不會(huì)添加坐標(biāo)軸數(shù)據(jù),也不會(huì)繪制坐標(biāo)軸。kind='scatter', #可選項(xiàng)為(scatter 散點(diǎn)圖 及l(fā)ine 曲線圖).height=5, #每個(gè) 生成圖 的高度aspect=1, #每個(gè) 生成圖 的長(zhǎng)寬比 )舉例:
sns.relplot(x="timepoint", y="signal", data=df, kind="line")================================================================
(4)條形圖 sns.barplot()
countplot參數(shù)和barplot基本差不多,可以對(duì)比著記憶,有一點(diǎn)不同的是countplot中不能同時(shí)輸入x和y,且countplot沒有誤差棒,類別特征barplot要同時(shí)傳入x,y
seaborn.barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, ci=95, n_boot=1000, units=None, orient=None, color=None, palette=None, saturation=0.75, errcolor='.26', errwidth=None, capsize=None, dodge=True, ax=None, **kwargs)參數(shù)解讀:
seaborn.barplot(x=None, y=None, #數(shù)據(jù)X,Y軸傳值hue=None, #數(shù)據(jù)分組變量名data=None, #DataFrame,數(shù)組或數(shù)組列表order=None, hue_order=None, #顯式指定分類順序,order=[字段變量名1,字段變量名2,...]ci=95, #在估計(jì)值附近繪制置信區(qū)間的大小n_boot=1000, #計(jì)算置信區(qū)間時(shí)使用的引導(dǎo)迭代次數(shù)orient=None, # 橫v\縱h 圖的顯示方向(垂直或水平,即橫向或縱向)color=None, #顏色palette=None, #調(diào)試板名稱,列表或字典類型saturation=0.75, #飽和度:floaterrcolor='.26', #表示置信區(qū)間的線條顏色errwidth=None, #float 表示誤差線的厚度capsize=None, #float 表示誤差線上"帽"的寬度(誤差線上的橫線的寬度)dodge=True, ax=None, **kwargs)舉例:
sns.barplot(x=df.A, y=df.B,hue=df.C,data=df) #palette:調(diào)色板,控制不同的顏色style fig,axes=plt.subplots(2,1) sns.barplot(x="color",y="age",data=data,ax=axes[0]) #上圖 sns.barplot(x="color",y="age",data=data,palette="Set3",ax=axes[1]) #下圖 #capsize(float): 設(shè)置誤差棒帽條(上下兩根橫線)的寬度 fig,axes=plt.subplots(1,2) sns.barplot(x="color",y="age",data=data,ax=axes[0],capsize=.2) #左圖 sns.barplot(x="color",y="age",data=data,ax=axes[1],capsize=.9) #右圖參考
- https://seaborn.apachecn.org/#/docs/21
備注
- 有時(shí)作圖時(shí),會(huì)有圖片標(biāo)題中文顯示亂碼的問(wèn)題,可以使用這行代碼解決:
- 如果X的維度名稱太長(zhǎng)可以使用傾斜45度處理
總結(jié)
以上是生活随笔為你收集整理的Seaborn常用绘图函数-sjs的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 论文笔记--3D Human Pose
- 下一篇: python弹性碰撞次数圆周率_高中物理