以下是針對上一篇文章中的課後練習中每個問題的詳細解答,包括程式碼和結果解釋。
使用內建資料集 tips
,繪製每天平均小費的柱狀圖。
barplot
繪製圖表。x
為天數 (day
),y
為小費 (tip
)。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()
Blues
,讓圖表更加美觀。使用自己的數據,生成一個相關係數的熱力圖,視覺化數據的相關性。
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()
annot=True
在每個格子中顯示具體的相關係數值。cmap="coolwarm"
使用藍-紅色調,讓相關性強弱更易辨識。將 Seaborn 的繪圖與 Matplotlib 的自訂功能結合,製作更複雜的報表,例如增加多個圖表。
plt.subplot
方法,構建多個子圖。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()
plt.subplot
分別繪製 4 個子圖。suptitle
添加全局標題。tight_layout
自動調整子圖間距,避免圖表重疊。通過這些練習,你可以:
建議讀者將這些範例應用於自己的數據,進一步理解 Seaborn 和資料視覺化的強大之處!