vocus logo

方格子 vocus

[Python教學] Seaborn:高階資料視覺化工具-課後練習詳解

更新 發佈閱讀 8 分鐘

以下是針對上一篇文章中的課後練習中每個問題的詳細解答,包括程式碼和結果解釋。


練習 1:繪製每天平均小費的柱狀圖

題目

使用內建資料集 tips,繪製每天平均小費的柱狀圖。

解答

  1. 使用 Seaborn 的 barplot 繪製圖表。
  2. 設置 x 為天數 (day),y 為小費 (tip)。
  3. 設置標題和坐標軸標籤以增加可讀性。
import seaborn as sns
import matplotlib.pyplot as plt

# 載入內建資料集
tips = sns.load_dataset("tips")

# 繪製柱狀圖
sns.barplot(x="day", y="tip", hue="day", data=tips, errorbar="sd", palette="Blues", legend=False)
plt.title("Average Tip by Day")
plt.xlabel("Day of the Week")
plt.ylabel("Average Tip ($)")
plt.show()
raw-image


結果解釋

  • 每根柱子代表某一天的平均小費。
  • 將 hue="day" 加入 sns.barplot 呼叫,將每個“day”值對應到不同的顏色。
  • 如果不需要圖例,可以透過設定 legend=False 來避免顯示圖例。
  • 調色板使用 Blues,讓圖表更加美觀。

練習 2:生成相關係數的熱力圖

題目

使用自己的數據,生成一個相關係數的熱力圖,視覺化數據的相關性。

解答

  1. 建立一個 Pandas DataFrame,模擬自己的數據。
  2. 計算數據的相關係數矩陣。
  3. 使用 Seaborn 的 heatmap 繪製熱力圖。
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 建立自定義數據
data = {
"Math_Score": [80, 85, 88, 92, 70, 75, 78],
"Science_Score": [85, 88, 84, 91, 68, 77, 80],
"English_Score": [78, 82, 85, 89, 73, 76, 77]
}

df = pd.DataFrame(data)

# 計算相關係數矩陣
corr = df.corr()

# 繪製熱力圖
plt.figure(figsize=(8, 6))
sns.heatmap(corr, annot=True, cmap="coolwarm", fmt=".2f", linewidths=0.5)
plt.title("Correlation Heatmap")
plt.show()
raw-image


結果解釋

  • 熱力圖中的每個格子代表兩組變數之間的相關係數。
  • annot=True 在每個格子中顯示具體的相關係數值。
  • cmap="coolwarm" 使用藍-紅色調,讓相關性強弱更易辨識。

練習 3:結合 Matplotlib 與 Seaborn 製作報表

題目

將 Seaborn 的繪圖與 Matplotlib 的自訂功能結合,製作更複雜的報表,例如增加多個圖表。

解答

  1. 使用 Matplotlib 的 plt.subplot 方法,構建多個子圖。
  2. 在每個子圖中使用 Seaborn 繪製不同的圖表。
  3. 添加全局標題和註解。
import seaborn as sns
import matplotlib.pyplot as plt

# 加載內建資料集
tips = sns.load_dataset("tips")

# 設置畫布大小
plt.figure(figsize=(14, 8))

# 子圖 1:散點圖
plt.subplot(2, 2, 1)
sns.scatterplot(x="total_bill", y="tip", hue="sex", data=tips)
plt.title("Scatter Plot: Total Bill vs Tip")
plt.xlabel("Total Bill ($)")
plt.ylabel("Tip ($)")

# 子圖 2:直方圖
plt.subplot(2, 2, 2)
sns.histplot(tips["total_bill"], bins=20, kde=True, color="orange")
plt.title("Distribution of Total Bill")
plt.xlabel("Total Bill ($)")
plt.ylabel("Frequency")

# 子圖 3:箱型圖
plt.subplot(2, 2, 3)
sns.boxplot(x="day", y="total_bill", hue="sex", data=tips, palette="Set2")
plt.title("Box Plot: Total Bill by Day and Sex")
plt.xlabel("Day of the Week")
plt.ylabel("Total Bill ($)")

# 子圖 4:條形圖
plt.subplot(2, 2, 4)
sns.barplot(x="day", y="tip", data=tips, errorbar="sd", palette="coolwarm")
plt.title("Average Tip by Day")
plt.xlabel("Day of the Week")
plt.ylabel("Average Tip ($)")

# 添加全局標題
plt.suptitle("Comprehensive Data Visualization with Seaborn", fontsize=16)
plt.tight_layout(rect=[0, 0, 1, 0.95]) # 調整佈局避免重疊
plt.show()
raw-image


結果解釋

  • 報表展示了同一數據的多角度視覺化,便於進行數據分析。
  • plt.subplot 分別繪製 4 個子圖。
  • 使用 Matplotlib 的 suptitle 添加全局標題。
  • tight_layout 自動調整子圖間距,避免圖表重疊。

總結

通過這些練習,你可以:

  1. 熟悉 Seaborn 的基礎功能和不同圖表的繪製。
  2. 掌握如何結合 Matplotlib 添加額外的自訂功能。
  3. 為數據分析過程提供更專業和清晰的視覺化工具。

建議讀者將這些範例應用於自己的數據,進一步理解 Seaborn 和資料視覺化的強大之處!

留言
avatar-img
追極光的北極熊|軟體工程師的小天地
16會員
170內容數
歡迎來到我的部落格!這裡記錄了軟體工程師的日常生活點滴,並分享程式設計與演算法的實用教學。無論你是初學者還是有經驗的開發者,都能在這裡找到深入淺出的技術解析與實戰技巧。此外,我也會分享工作中的心路歷程與學習心得,讓你不僅學到技術,更能瞭解軟體開發的實際應用與挑戰。希望透過這個平台,能與你共同成長,激發對技術的熱情!
2025/04/28
當我們開發程式時,功能能正常運作固然重要,但在資料量變大或執行時間變長時,效能就成為不可忽視的一環。尤其在 Web 應用、資料分析或科學運算中,程式跑得快與否,直接影響使用者體驗與系統成本。
2025/04/28
當我們開發程式時,功能能正常運作固然重要,但在資料量變大或執行時間變長時,效能就成為不可忽視的一環。尤其在 Web 應用、資料分析或科學運算中,程式跑得快與否,直接影響使用者體驗與系統成本。
2025/04/22
嘿,大家好!上篇教學文章我們做出了一個待辦事項清單,已經有點小工具的感覺了吧?今天我們要再升級,來做個「簡單記事本」。這個專案不只可以寫東西,還能存檔、讀檔,甚至換字體大小,感覺就像自己寫了個迷你軟體!
2025/04/22
嘿,大家好!上篇教學文章我們做出了一個待辦事項清單,已經有點小工具的感覺了吧?今天我們要再升級,來做個「簡單記事本」。這個專案不只可以寫東西,還能存檔、讀檔,甚至換字體大小,感覺就像自己寫了個迷你軟體!
2025/04/16
嘿,大家好!走到這一步,我們已經玩過 Tkinter 的基本招式、佈局、事件處理,還搞了些進階元件,應該有點信心了吧?今天我們要把這些功夫練成一套連招,來做個實用的「待辦事項清單」(To-Do List),順便聊聊怎麼把程式寫得更漂亮、更好用。準備好了嗎?這就上場啦!
2025/04/16
嘿,大家好!走到這一步,我們已經玩過 Tkinter 的基本招式、佈局、事件處理,還搞了些進階元件,應該有點信心了吧?今天我們要把這些功夫練成一套連招,來做個實用的「待辦事項清單」(To-Do List),順便聊聊怎麼把程式寫得更漂亮、更好用。準備好了嗎?這就上場啦!
看更多
你可能也想看
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
本文將介紹如何利用Python進行資料分析並繪製圓餅圖。
Thumbnail
本文將介紹如何利用Python進行資料分析並繪製圓餅圖。
Thumbnail
本文介紹如何用Python繪製散布圖與迴歸線
Thumbnail
本文介紹如何用Python繪製散布圖與迴歸線
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
Hi, 大家好。我是茶桁。 在上一节课中,我们结束了Python正式的所有内容,但是咱们的Python课程还未结束。从这节课开始,我们要来学习一下Python的第三方库。 Python的生态非常完善也非常活跃,我们不太可能讲目前所有的第三方库全部都介绍一遍,只介绍几个有影响力并且和处理数据相关的
Thumbnail
Hi, 大家好。我是茶桁。 在上一节课中,我们结束了Python正式的所有内容,但是咱们的Python课程还未结束。从这节课开始,我们要来学习一下Python的第三方库。 Python的生态非常完善也非常活跃,我们不太可能讲目前所有的第三方库全部都介绍一遍,只介绍几个有影响力并且和处理数据相关的
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News