首頁 > 後端開發 > Python教學 > Seaborn 繪圖選擇變得簡單:如何有效地視覺化您的數據

Seaborn 繪圖選擇變得簡單:如何有效地視覺化您的數據

Mary-Kate Olsen
發布: 2024-11-30 13:40:11
原創
1008 人瀏覽過

資料視覺化是分析和呈現資料最強大的工具之一。 Seaborn 是一個基於 Matplotlib 建構的 Python 函式庫,提供了用於建立資訊豐富且多樣化的視覺化的高階介面。本文將引導您選擇正確的 Seaborn 繪圖、對其進行自訂以使其清晰,並避免常見的陷阱。

為什麼選擇正確的繪圖類型很重要?

您選擇的繪圖類型直接影響資料呈現其見解和資訊的有效性。

  • 散佈圖揭示了變數之間的相關性。

  • 熱圖簡化了大規模比較。

使用錯誤的繪圖類型可能會導致誤解,有時,由於我們選擇了錯誤的可視化,這些來自數據的見解被隱藏起來而永遠不會被揭示。

了解 Seaborn 繪圖類別

Seaborn 圖分為三個主要類別:關係分佈分類。以下是如何選擇和使用它們。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively
資料來源:https://seaborn.pydata.org/_images/function_overview_8_0.png

1. 關係圖

關係圖視覺化兩個變數之間的關係,通常是數值關係。 Seaborn 提供兩種主要類型的關係圖:散佈圖和線條圖。您可以使用relplot() 函數來建立這些圖。

sns.relplot(
    data=tips,
    x="total_bill", y="tip", hue="smoker",>



<p><img src="https://img.php.cn/upload/article/000/000/000/173294521670198.jpg" alt="Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively"><br>
source: seaborn documentation</p>

<p>Alternatively, you can use the scatterplot() function directly for scatter plots, which produce the same result. For line plots, you can either use relplot() with kind="line" or the more direct lineplot() function.<br>
</p>

<pre class="brush:php;toolbar:false">fmri = sns.load_dataset("fmri")
sns.relplot(data=fmri, x="timepoint", y="signal", kind="line")
登入後複製
登入後複製
登入後複製
登入後複製

或者你可以這樣寫:

fmri = sns.load_dataset("fmri")
sns.lineplot(data=fmri, x="timepoint", y="signal")
登入後複製
登入後複製
登入後複製

結果還是一樣。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively
來源:seaborn 文件

散佈圖顯示各個資料點,可以輕鬆識別模式或相關性。另一方面,線圖非常適合展示一段時間內或跨類別的趨勢。

2. 分佈圖

了解變數的分佈是分析或建模資料的關鍵的第一步。分佈圖旨在揭示單一變數的分佈或離散度。這些視覺化可以快速解決關鍵問題,例如:資料覆蓋什麼範圍?其中心趨勢是什麼?資料是否向特定方向傾斜?

與關係圖一樣,可以使用 displot() 函數透過指定 kind 參數來選擇所需的繪圖類型來建立分佈圖。或者,您可以直接使用 histplot()、kdeplot()、ecdfplot() 或 rugplot() 等函數來實現特定的分佈視覺化。

histplot() 函數非常適合視覺化頻率分佈。

sns.relplot(
    data=tips,
    x="total_bill", y="tip", hue="smoker",>



<p><img src="https://img.php.cn/upload/article/000/000/000/173294521670198.jpg" alt="Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively"><br>
source: seaborn documentation</p>

<p>Alternatively, you can use the scatterplot() function directly for scatter plots, which produce the same result. For line plots, you can either use relplot() with kind="line" or the more direct lineplot() function.<br>
</p>

<pre class="brush:php;toolbar:false">fmri = sns.load_dataset("fmri")
sns.relplot(data=fmri, x="timepoint", y="signal", kind="line")
登入後複製
登入後複製
登入後複製
登入後複製

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively
來源:seaborn 文件

kdeplot() 較適合顯示平滑的分佈曲線,而 ecdfplot() 則強調累積比例。 rugplot() 為原始資料點添加詳細標記,以更精細的細節增強其他視覺化效果。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

Seaborn 也支援使用 heatmap() 等工具視覺化二元分佈。熱圖對於說明相關矩陣或進行比較特別有效。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

3. 分類圖

分類圖旨在視覺化按類別組織的資料。建立這些繪圖的一般方法是使用 catplot() 函數,指定 kind 參數來選擇所需的繪圖類型。這些地塊分為三個主要係列。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively
選擇正確的分類圖類型取決於您要回答的特定問題。這些圖表提供了分析分類資料的多種視角:

- 分類散點圖
這些圖顯示類別內的各個資料點,有助於識別模式或分佈。範例包括 stripplot() 和 swarmplot()。

fmri = sns.load_dataset("fmri")
sns.lineplot(data=fmri, x="timepoint", y="signal")
登入後複製
登入後複製
登入後複製

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively
來源:seaborn 文件

- 分類分佈圖

這些圖表總結了類別內的資料分佈,提供了對變異性、分佈和集中趨勢的見解。範例包括 boxplot()、violinplot() 和 boxenplot()。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

- 分類估計圖

這些圖表計算總和估計值(例如平均值)並包含誤差線以顯示變異性或信賴區間。範例包括 barplot()、pointplot() 和 countplot()。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

如何選擇適合的 Seaborn 地塊

在繪製之前,先問自己這些問題:

資料是分類資料、數值資料還是兩者兼具?

您在探索關係、分佈或比較嗎?

資料集的大小和比例是多少?

了解您的數據可以引導您使用最合適的視覺化工具。下面的架構來自 Kaggle,展示如何根據您擁有的資料類型選擇圖表。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively
來源:kaggle

讓我們使用現實世界的數據來實現這一點。考慮來自Kaggle 的資料集,其中包含20 列,包括學習時間、出席率、家長參與、資源獲取、課外活動、睡眠時間、以前的分數、動機水平、互聯網訪問、輔導課程、家庭收入、教師品質、學校等特徵類型、同儕影響、體力活動、學習障礙、父母教育程度、離家距離、性別和考試成績。

  1. 了解您的數據 首先分析資料集中變數的類型以了解資料。數值變數最適合關係圖或分佈圖,而分類變數則非常適合分組或比較。例如,您可以使用線圖來分析基於出席率的數學成績趨勢。同樣,可以利用直方圖來檢查睡眠時間的分佈,幫助確定大多數學生是否得到了足夠的休息。
sns.relplot(
    data=tips,
    x="total_bill", y="tip", hue="smoker",>



<p><img src="https://img.php.cn/upload/article/000/000/000/173294521670198.jpg" alt="Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively"><br>
source: seaborn documentation</p>

<p>Alternatively, you can use the scatterplot() function directly for scatter plots, which produce the same result. For line plots, you can either use relplot() with kind="line" or the more direct lineplot() function.<br>
</p>

<pre class="brush:php;toolbar:false">fmri = sns.load_dataset("fmri")
sns.relplot(data=fmri, x="timepoint", y="signal", kind="line")
登入後複製
登入後複製
登入後複製
登入後複製

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

fmri = sns.load_dataset("fmri")
sns.lineplot(data=fmri, x="timepoint", y="signal")
登入後複製
登入後複製
登入後複製

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

  1. 定義你的目標 透過詢問您想要傳達什麼見解來確定您的目標。想要比較組嗎?選擇分類圖,例如長條圖或箱線圖。有興趣探索人際關係嗎?關係圖(例如散佈圖)是一個不錯的選擇。想要了解變異性?使用像直方圖這樣的分佈圖。例如,散佈圖有效地顯示兩個數值變數之間的關係,每個點代表一個觀察值。這樣可以輕鬆發現相關性、聚類或異常值。視覺化學習時間對考試成績的影響可以揭示更多的學習時間是否與更高的分數相關。
sns.displot(penguins, x="flipper_length_mm", hue="sex", multiple="dodge")
登入後複製

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

  1. 將圖與您的資料和目標相匹配 為您的數據和分析目標選擇適當的圖表至關重要。正確的視覺化可以讓您有效地提取有意義的見解。例如,與直方圖相比,線圖更適合觀察一段時間內的趨勢。使用不正確的繪圖可能會掩蓋重要的模式或見解,甚至使豐富的資料集變得不那麼有用。例如,長條圖非常適合比較不同家長參與程度的平均考試成績。該圖突出顯示了跨類別的數值變數的平均值(或其他匯總統計數據),使其非常適合高級比較。
sns.relplot(
    data=tips,
    x="total_bill", y="tip", hue="smoker",>



<p><img src="https://img.php.cn/upload/article/000/000/000/173294521670198.jpg" alt="Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively"><br>
source: seaborn documentation</p>

<p>Alternatively, you can use the scatterplot() function directly for scatter plots, which produce the same result. For line plots, you can either use relplot() with kind="line" or the more direct lineplot() function.<br>
</p>

<pre class="brush:php;toolbar:false">fmri = sns.load_dataset("fmri")
sns.relplot(data=fmri, x="timepoint", y="signal", kind="line")
登入後複製
登入後複製
登入後複製
登入後複製

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

自訂 Seaborn 繪圖的技巧

使用 plt.title()、plt.xlabel() 和 plt.ylabel() 等函數加入標題和標籤,提高視覺化的清晰度。要合併分類維度,請利用 Seaborn 中的色調屬性,它允許您根據資料集中的特定列來區分資料點。使用 set_palette() 函數使用 Coolwarm、husl 或 Set2 等調色板自訂配色方案。此外,透過使用 sns.set_theme() 調整資料點的樣式或大小並使用 plt.figure(figsize=(width, height)) 定義圖形尺寸來區分資料點。

要避免的常見陷阱

為了透過資料視覺化有效地傳達見解,在提供足夠的資訊和避免繪圖過度擁擠之間取得平衡至關重要。圖表中過多的數據點可能會讓觀眾不知所措,而細節不足可能會導致混亂。始終包含清晰的軸標籤和圖例,並確保視覺化強調您想要強調的關鍵見解。

另一個常見問題是創造誤導性的視覺化效果。為了防止這種情況,請確保軸適當縮放以準確地表示資料。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

結論

選擇正確的 Seaborn 圖是增強資料理解和有效傳達見解的關鍵一步。適當的視覺化可以揭示可能隱藏的模式、關係和趨勢。透過讓情節類型與您的資料結構和分析目標保持一致(無論是探索分佈、關係還是比較),您可以確保故事敘述的清晰度和精確度。

資料視覺化既是一門藝術,也是一門科學。不要猶豫,嘗試不同的 Seaborn 情節來發現新的觀點或完善您的見解。透過實踐和創造力,您將能夠充分利用 Seaborn 的潛力,將原始數據轉化為引人注目的視覺敘事。

以上是Seaborn 繪圖選擇變得簡單:如何有效地視覺化您的數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板