新聞中心
FacetGrid 可以通過 col 和 row 等參數(shù)來一次性構(gòu)建多個(gè)圖形。

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、做網(wǎng)站、正陽網(wǎng)絡(luò)推廣、成都小程序開發(fā)、正陽網(wǎng)絡(luò)營銷、正陽企業(yè)策劃、正陽品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供正陽建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
relplot 、catplot 、lmplot 等函數(shù)可以通過 col 、row 等在一個(gè) Figure 中繪制多個(gè)圖。這個(gè)函數(shù)之所以有這些功能,是因?yàn)楹瘮?shù)底層使用了 FacetGrid 來組裝這些圖形。
FacetGrid 繪圖的 x 和 y 參數(shù)必須為 DataFrame 的列的名字。而直接使用 Axes 繪圖,參數(shù)更靈活。
普通的 Axes 繪圖
實(shí)際上 Seaborn 的繪圖函數(shù)中也有大量的直接使用 Axes 進(jìn)行繪圖的,凡是函數(shù)名中已經(jīng)明確顯示了這個(gè)圖的類型,這種圖都是使用 Axes 繪圖的。比如 sns.scatterplot 、sns.lineplot 、 sns.barplot 等。Axes 繪圖可以直接使用之前的 matplotlib 的一些方式設(shè)置圖的元素。
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
tips = pd.read_csv("dataset/tips.csv")
#scatterplot繪圖返回一個(gè)Axes對(duì)象
axes = sns.scatterplot(x="total_bill",y="tip",data=tips)
#利用Axes對(duì)象的函數(shù)設(shè)置一些屬性
axes.set_xticks(range(0,60,5))
fig,[ax1,ax2] = plt.subplots(1,2,figsize=(20,5))
#z繪制散點(diǎn)圖
#ax參數(shù)指定Axes對(duì)象
sns.scatterplot(x="total_bill",y="tip",data=tips,ax=ax1)
#繪制柱狀圖
sns.barplot(x="day",y="total_bill",data=tips,ax=ax2)
#scatterplot的參數(shù)可以為數(shù)組等形式的數(shù)據(jù)
sns.scatterplot(x=tips['total_bill'],y='tip',data=tips)
FacetGrid 基本使用
先創(chuàng)建一個(gè) FacetGrid 對(duì)象,然后再調(diào)用這個(gè)對(duì)象的 map 方法。其中 map 為方法的第一個(gè)參數(shù)是一個(gè)函數(shù),后續(xù) map 將調(diào)用這個(gè)函數(shù)來繪制圖形。后面的參數(shù)就是傳給這個(gè)函數(shù)的參數(shù)。
其中第一個(gè)參數(shù)是可以繪制 Axes 圖,并且可以接受 color 參數(shù)的函數(shù)??梢匀〉闹等缦拢?/p>
|
參數(shù) |
描述 |
對(duì)應(yīng)使用了 FacetGrid 函數(shù) |
|
plt.plot / sns.lineplot |
繪制折線圖 |
sns.relplot(kind=“l(fā)ine”) |
|
plt.hexbin |
繪制六邊形圖形 |
sns.jointplot(kind=“hex”) |
|
plt.hist |
繪制直方圖 |
sns.distplot |
|
plt.scatter / sns.scatterplot |
繪制散點(diǎn)圖 |
sns.relplot(kind=“scatter”) |
|
sns.stripplot |
繪制分類散點(diǎn)圖 |
sns.catplot(kind=“strip” |
|
sns.swarmplot |
繪制散開來的分類散點(diǎn)圖 |
sns.catplot(kind=“swarm”) |
|
sns.boxplot |
繪制箱線圖 |
sns.catplot(kind=“box”) |
|
sns.violinplot |
繪制小提琴圖 |
sns.catplot(kind=“violin”) |
|
sns.pointplot |
繪制點(diǎn)線圖 |
sns.catplot(kind=“point”) |
|
sns.barplot |
繪制條形圖 |
sns.catplot(kind=“bar”) |
|
sns.countplot |
繪制數(shù)量柱狀圖 |
sns.catplot(kind=“count”) |
|
sns.regplot |
繪制帶有回歸線的散點(diǎn)圖 |
sns.lmplot |
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
tips = pd.read_csv("dataset/tips.csv")
#繪制散點(diǎn)圖
g1 = sns.FacetGrid(tips)
g1.map(plt.scatter,"total_bill","tip")
繪制多個(gè)圖形
FacetGrid 可以通過 col 和 row 參數(shù)在一個(gè) Figure 上繪制多個(gè)圖形,其中 col 和 row 都是數(shù)據(jù)集中的某個(gè)列的名字。只要指定這個(gè)名字,那么就會(huì)自動(dòng)的按照指定列的值的個(gè)數(shù)繪制指定個(gè)數(shù)的圖形。
#繪制多個(gè)圖
g2 = sns.FacetGrid(tips,col="day",col_wrap=2)
g2.map(plt.scatter,"total_bill","tip")
添加顏色觀察字段
可以通過添加 hue 參數(shù)來控制每個(gè)圖中元素的顏色來觀察其他的字段
g2 = sns.FacetGrid(tips,col="day",hue="time")
g2.map(plt.scatter,"total_bill","tip")
#添加圖例
g2.add_legend()
設(shè)置每個(gè)圖形的尺寸
使用 FacetGrid 繪制出圖形后,如果設(shè)置每個(gè)圖形的尺寸或者是寬高比,可以通過在 FacetGrid 中設(shè)置 height 和 aspect 來實(shí)現(xiàn),其中 height 表示的是每個(gè)圖形的尺寸(默認(rèn)是寬高一致),aspect 表示的是 寬度/高度 的比例。
g3 = sns.FacetGrid(tips,col="smoker",height=4,aspect=1.5)
g3.map(sns.barplot,"day","total_bill")
設(shè)置圖例
默認(rèn)情況下不會(huì)添加圖例,我們可以通過 g.add_legend() 來添加圖例。
(1)通過 title 來控制圖例的標(biāo)題
(2)通過 label_order 來控制圖例元素的順序
sns.set(rc={"font.sans-serif":"SimHei"})
g2 = sns.FacetGrid(tips,col="day",hue="time")
g2.map(plt.scatter,"total_bill","tip")
#添加圖例
g2.add_legend(title="標(biāo)題",label_order=['Lunch','Dinner'])
new_labels = ['午餐','晚餐']
for text,label in zip(g2._legend.texts,new_labels):
text.set_text(label)
設(shè)置標(biāo)題
設(shè)置標(biāo)題可以通過:
g.set_titles(template=None,
row_template=None,
col_template=None)
來實(shí)現(xiàn),這三個(gè)參數(shù)分別代表的意義如下:
- template:給圖設(shè)置標(biāo)題,其中有 {row_var}:繪制每行圖像的名稱,{row_name}:繪制每行圖像的值,{col_var}:繪制每列圖像的名稱,{col_name}:繪制每列圖像的值
- col_template:給圖像設(shè)置列的標(biāo)題,其中有 {col_var} 以及 {col_name} 可以使用
- row_template:給圖像設(shè)置行的標(biāo)題,其中有 {row_var} 以及 {row_name} 可以使用
g = sns.FacetGrid(tips,col="day",row="time")
g.map(sns.regplot,"total_bill","tip")
#設(shè)置標(biāo)題為行
#g.set_titles(template="{row_var}/{row_name}")
#設(shè)置標(biāo)題為列
g.set_titles(template="{col_var}/{col_name}標(biāo)題")
設(shè)置坐標(biāo)軸
- g.set_axis_labels(x_var,y_var):一次性設(shè)置 x 和 y 的坐標(biāo)的標(biāo)題
- g.set_xlabels(label):設(shè)置 x 軸的標(biāo)題
- g.set_ylabels(label):設(shè)置 y 軸的標(biāo)題
- g.set(xticks,yticks):設(shè)置 x 和 y 軸的刻度
- g.set_xticklables(labels):設(shè)置 x 軸的刻度文字
- g.set_yticklabels(labels):設(shè)置 y 軸的刻度文字
g = sns.FacetGrid(tips,col="day",row="time")
g.map(sns.scatterplot,"total_bill","tip")
#一次性設(shè)置 x 和 y 的坐標(biāo)的標(biāo)題
g.set_axis_labels('消費(fèi)金額','小費(fèi)')
g.set(facecolor='y')
#設(shè)置 x 軸的刻度和刻度文字
g.set(xticks=range(0,50,5),xticklabels=["$%d"%x for x in range(0,50,5)])
g.set 方法
g.set 方法可以對(duì) FacetGrid 下的每個(gè)子圖 Axes 設(shè)置屬性。其中可以設(shè)置的參數(shù)完全是根據(jù) Axes 的屬性來的。比如可以設(shè)置每個(gè) Axes 的 facecolor 等。詳情可查詢 matplotlib.Axes官方文檔
g.set(facecolor='y')
#設(shè)置 x 軸的刻度和刻度文字
g.set(xticks=range(0,50,5),xticklabels=["$%d"%x for x in range(0,50,5)])
g.fig 方法
通過 g.fig 可以獲取到當(dāng)前的 Figure 對(duì)象,然后通過 Figure 對(duì)象再可以設(shè)置其他屬性,比如 dip 等。
g = sns.FacetGrid(tips,col="day",row="time")
g.map(sns.scatterplot,"total_bill","tip")
#設(shè)置分辨率
g.fig.set_dpi(100)
分享名稱:Seaborn可視化進(jìn)階之FacetGrid結(jié)構(gòu)圖
標(biāo)題網(wǎng)址:http://m.fisionsoft.com.cn/article/cdohgoi.html


咨詢
建站咨詢
