最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

詳細的數(shù)據(jù)可視化庫之Seaborn教程—catplot:分類型數(shù)據(jù)作坐標軸畫圖

2021-12-01 10:43 作者:python風控模型  | 我要投稿

用分類數(shù)據(jù)繪圖?

在關(guān)系圖教程中,我們看到了如何使用不同的視覺表示來顯示數(shù)據(jù)集中多個變量之間的關(guān)系。在示例中,我們關(guān)注主要關(guān)系在兩個數(shù)值變量之間的情況。如果主要變量之一是“分類的”(分為離散組),則使用更專業(yè)的可視化方法可能會有所幫助。

在 seaborn 中,有幾種不同的方式來可視化涉及分類數(shù)據(jù)的關(guān)系。以之間的關(guān)系類似relplot(),要么scatterplot()或者lineplot(),有兩種方法可以讓這些地塊。有許多軸級函數(shù)用于以不同方式繪制分類數(shù)據(jù),還有一個圖形級界面catplot(),可提供對它們的統(tǒng)一更高級別訪問。

將不同的分類情節(jié)類型視為屬于三個不同的系列會很有幫助,我們將在下面詳細討論。他們是:

分類散點圖:

stripplot()(使用kind="strip"; 默認值)

swarmplot()(與kind="swarm"


分類分布圖:

boxplot()(與kind="box"

violinplot()(與kind="violin"

boxenplot()(與kind="boxen"


分類估計圖:

  • pointplot()(與kind="point"

  • barplot()(與kind="bar"

  • countplot()(與kind="count"


這些系列使用不同的粒度級別表示數(shù)據(jù)。在決定使用哪個時,您必須考慮要回答的問題。統(tǒng)一的 API 使您可以輕松地在不同類型之間切換并從多個角度查看您的數(shù)據(jù)。

在本教程中,我們將主要關(guān)注圖形級界面,catplot(). 請記住,此函數(shù)是上述每個函數(shù)的高級接口,因此我們將在顯示每種繪圖時引用它們,并保留更詳細的特定于類型的 API 文檔。


分類散點圖?

中數(shù)據(jù)的默認表示catplot()使用散點圖。seaborn 中實際上有兩種不同的分類散點圖。他們采用不同的方法來解決用散點圖表示分類數(shù)據(jù)的主要挑戰(zhàn),即屬于一個類別的所有點將落在對應(yīng)于分類變量的軸上的相同位置。使用的方法stripplot(),它是中的默認“種類”,catplot()是通過少量隨機“抖動”調(diào)整分類軸上點的位置:


圖片


jitter參數(shù)控制抖動的幅度或完全禁用它:


圖片


第二種方法使用防止它們重疊的算法沿分類軸調(diào)整點。它可以更好地表示觀察的分布,盡管它只適用于相對較小的數(shù)據(jù)集。這種情節(jié)有時被稱為“蜂群”,是在 seaborn by 中繪制的swarmplot(),通過設(shè)置kind="swarm"in激活catplot()


圖片


與關(guān)系圖類似,可以通過使用hue語義向分類圖添加另一個維度。(分類圖目前不支持sizestyle語義)。每個不同的分類繪圖函數(shù)以hue不同的方式處理語義。對于散點圖,只需要改變點的顏色:


圖片


與數(shù)值數(shù)據(jù)不同,如何沿其軸對分類變量的級別進行排序并不總是很明顯。通常,seaborn 分類繪圖函數(shù)會嘗試從數(shù)據(jù)中推斷類別的順序。如果您的數(shù)據(jù)具有 pandasCategorical數(shù)據(jù)類型,則可以在此處設(shè)置類別的默認順序。如果傳遞給分類軸的變量看起來是數(shù)字,則將對級別進行排序。但數(shù)據(jù)仍被視為分類數(shù)據(jù)并繪制在分類軸上的序數(shù)位置(特別是在 0、1、...),即使使用數(shù)字來標記它們:


圖片


選擇默認排序的另一個選項是采用出現(xiàn)在數(shù)據(jù)集中的類別級別。也可以使用order參數(shù)在特定于繪圖的基礎(chǔ)上控制排序。在同一個圖中繪制多個分類圖時,這很重要,我們將在下面看到更多:


圖片


我們已經(jīng)提到了“分類軸”的概念。在這些示例中,它始終對應(yīng)于水平軸。但是將類別變量放在縱軸上通常會有所幫助(特別是當類別名稱比較長或類別較多時)。為此,請交換對軸的變量分配:


圖片


類別內(nèi)觀察值的分布?

隨著數(shù)據(jù)集大小的增長,分類散點圖在它們可以提供的關(guān)于每個類別中值分布的信息方面變得有限。發(fā)生這種情況時,可以采用多種方法來匯總分布信息,以便于跨類別級別進行輕松比較。

箱線圖?

第一個是熟悉的boxplot()。這種圖顯示了分布的三個四分位數(shù)和極值?!昂殹毖由斓轿挥谙滤姆治粩?shù)和上四分位數(shù) 1.5 IQR 內(nèi)的點,然后獨立顯示超出此范圍的觀測值。這意味著箱線圖中的每個值都對應(yīng)于數(shù)據(jù)中的一個實際觀察值。


圖片


添加hue語義時,語義變量每個級別的框沿分類軸移動,因此它們不會重疊:


圖片


這種行為被稱為“躲避”,默認情況下是打開的,因為它假定語義變量嵌套在主分類變量中。如果不是這種情況,您可以禁用閃避:


圖片


相關(guān)函數(shù)boxenplot()繪制類似于箱線圖但經(jīng)過優(yōu)化以顯示有關(guān)分布形狀的更多信息的圖。它最適合更大的數(shù)據(jù)集:


圖片


小提琴圖?

一種不同的方法是 a?violinplot(),它將箱線圖與分布教程中描述的核密度估計過程相結(jié)合:


圖片


這種方法使用核密度估計來提供對值分布的更豐富的描述。此外,箱線圖中的四分位數(shù)和晶須值顯示在小提琴內(nèi)部。缺點是,由于 violinplot 使用 KDE,因此可能需要調(diào)整一些其他參數(shù),相對于簡單的箱線圖增加了一些復(fù)雜性:


圖片


當色調(diào)參數(shù)只有兩個級別時,也可以“拆分”小提琴,這樣可以更有效地利用空間:

sns.catplot(x="day", y="total_bill", hue="sex",
? ? ? ? ? ?kind="violin", split=True, data=tips)
圖片


最后,在小提琴內(nèi)部繪制的圖有幾個選項,包括顯示每個單獨觀察而不是匯總箱線圖值的方法:

sns.catplot(x="day", y="total_bill", hue="sex",
? ? ? ? ? ?kind="violin", inner="stick", split=True,
? ? ? ? ? ?palette="pastel", data=tips)
圖片


結(jié)合swarmplot()striplot()與箱線圖或小提琴圖一起顯示每個觀察結(jié)果以及分布摘要也很有用:

g = sns.catplot(x="day", y="total_bill", kind="violin", inner=None, data=tips)
sns.swarmplot(x="day", y="total_bill", color="k", size=3, data=tips, ax=g.ax)
圖片


類別內(nèi)的統(tǒng)計估計?

對于其他應(yīng)用程序,您可能希望顯示值集中趨勢的估計值,而不是顯示每個類別內(nèi)的分布。Seaborn 有兩種主要方式來顯示這些信息。重要的是,這些函數(shù)的基本 API 與上面討論的那些相同。


條形圖?

實現(xiàn)這一目標的一種熟悉的情節(jié)風格是條形圖。在 seaborn 中,該barplot()函數(shù)對完整數(shù)據(jù)集進行操作并應(yīng)用一個函數(shù)來獲得估計值(默認取平均值)。當每個類別中有多個觀測值時,它還使用自舉法計算估計值的置信區(qū)間,該區(qū)間使用誤差線繪制:

titanic = sns.load_dataset("titanic")
sns.catplot(x="sex", y="survived", hue="class", kind="bar", data=titanic)
圖片


條形圖的一個特例是當您想要顯示每個類別中的觀察數(shù)而不是計算第二個變量的統(tǒng)計量時。這類似于分類變量而非定量變量的直方圖。在 seaborn 中,使用countplot()函數(shù)很容易做到這一點:

sns.catplot(x="deck", kind="count", palette="ch:.25", data=titanic)
圖片


barplot()countplot()可以被調(diào)用以所有的選項上面所討論的,與他人被每個功能的詳細文檔中所示沿著:

sns.catplot(y="deck", hue="class", kind="count",
? ? ? ? ? ?palette="pastel", edgecolor=".6",
? ? ? ? ? ?data=titanic)
圖片


點圖?

pointplot()函數(shù)提供了一種用于可視化相同信息的替代樣式。此函數(shù)還使用另一個軸上的高度對估計值進行編碼,但不是顯示完整的條形圖,而是繪制點估計值和置信區(qū)間。此外,pointplot()連接來自同一hue類別的點。這可以很容易地看出主要關(guān)系是如何作為色調(diào)語義的函數(shù)而變化的,因為你的眼睛非常擅長觀察斜率的差異:

sns.catplot(x="sex", y="survived", hue="class", kind="point", data=titanic)
圖片


雖然分類函數(shù)缺乏style關(guān)系函數(shù)的語義,但改變標記和/或線型以及色調(diào)以使圖形最易于訪問并在黑白中重現(xiàn)良好仍然是一個好主意:

sns.catplot(x="class", y="survived", hue="sex",
? ? ? ? ? ?palette={"male": "g", "female": "m"},
? ? ? ? ? ?markers=["^", "o"], linestyles=["-", "--"],
? ? ? ? ? ?kind="point", data=titanic)
圖片


繪制“寬格式”數(shù)據(jù)?

雖然首選使用“長格式”或“整潔”數(shù)據(jù),但這些函數(shù)也可以應(yīng)用于各種格式的“寬格式”數(shù)據(jù),包括 Pandas DataFrames 或二維 numpy 數(shù)組。這些對象應(yīng)該直接傳遞給data參數(shù):

iris = sns.load_dataset("iris")
sns.catplot(data=iris, orient="h", kind="box")
圖片


此外,軸級函數(shù)接受 Pandas 或 numpy 對象的向量,而不是 a 中的變量DataFrame

sns.violinplot(x=iris.species, y=iris.sepal_length)
圖片


要控制由上述函數(shù)繪制的圖形的大小和形狀,您必須使用 matplotlib 命令自己設(shè)置圖形:

f, ax = plt.subplots(figsize=(7, 3))
sns.countplot(y="deck", data=titanic, color="c")
圖片


當您需要一個分類圖形與其他類型的圖在更復(fù)雜的圖形中愉快地共存時,這是您應(yīng)該采用的方法。


顯示多個方面的關(guān)系?

就像relplot(),catplot()建立在一個事實之上FacetGrid意味著很容易添加分面變量來可視化更高維的關(guān)系:


sns.catplot(x="day", y="total_bill", hue="smoker",
? ? ? ? ? ?col="time", aspect=.7,
? ? ? ? ? ?kind="swarm", data=tips)
圖片


為了進一步自定義繪圖,您可以使用FacetGrid它返回的對象上的方法:

g = sns.catplot(x="fare", y="survived", row="class",
? ? ? ? ? ? ? ?kind="box", orient="h", height=1.5, aspect=4,
? ? ? ? ? ? ? ?data=titanic.query("fare > 0"))
g.set(xscale="log")
圖片


catplot-用分類數(shù)據(jù)繪圖就為大家介紹到這里,歡迎各位同學(xué)報名《呆瓜半小時入門python數(shù)據(jù)分析》https://ke.qq.com/course/3064943,學(xué)習(xí)更多相關(guān)知識



詳細的數(shù)據(jù)可視化庫之Seaborn教程—catplot:分類型數(shù)據(jù)作坐標軸畫圖的評論 (共 條)

分享到微博請遵守國家法律
阿合奇县| 龙川县| 黄山市| 攀枝花市| 高密市| 淮北市| 新建县| 建阳市| 南京市| 顺义区| 大渡口区| 都兰县| 瓦房店市| 玉山县| 搜索| 迁西县| 汉源县| 东港市| 西盟| 平泉县| 鸡西市| 蒲江县| 临沂市| 东乌| 勐海县| 徐闻县| 鄂州市| 当雄县| 蒙阴县| 潞西市| 台州市| 灌南县| 平泉县| 图片| 莱州市| 隆回县| 博乐市| 鄢陵县| 施甸县| 巴中市| 许昌市|