为什么选择 Seaborn?
Seaborn 是基于 Matplotlib 的高级可视化库,专门用于统计图表。它的优势在于:
- 默认主题更美观
- 一行代码创建复杂图表
- 内置统计功能(如回归线)
- 与 Pandas DataFrame 无缝集成
安装与设置
pip install seaborn
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# 设置主题
sns.set_theme(style="whitegrid")
常用图表类型
分布图
# 直方图
tips = sns.load_dataset("tips")
sns.histplot(data=tips, x="total_bill", bins=20, kde=True)
plt.title("账单金额分布")
plt.show()
# 核密度图
sns.kdeplot(data=tips, x="total_bill", shade=True)
plt.title("账单金额密度图")
plt.show()
关系图
# 散点图
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="sex", size="size")
plt.title("账单与小费的关系")
plt.show()
# 关系图(自动添加回归线)
sns.regplot(data=tips, x="total_bill", y="tip")
plt.title("账单与小费的回归分析")
plt.show()
分类图
# 箱线图
sns.boxplot(data=tips, x="day", y="total_bill", hue="sex")
plt.title("不同性别的账单分布")
plt.show()
# 小提琴图
sns.violinplot(data=tips, x="day", y="total_bill", hue="sex", split=True)
plt.title("小提琴图:账单分布")
plt.show()
# 条形图
sns.barplot(data=tips, x="day", y="tip", ci=95)
plt.title("每日平均小费")
plt.show()
热力图
# 相关性热力图
corr = tips.corr()
sns.heatmap(corr, annot=True, cmap="coolwarm", center=0)
plt.title("特征相关性热力图")
plt.show()
机器学习可视化案例
特征分布可视化
from sklearn.datasets import load_iris
# 加载数据
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['species'] = iris.target
# 特征分布图
sns.pairplot(df, hue="species", markers=["o", "s", "D"])
plt.suptitle("鸢尾花特征分布", y=1.02)
plt.show()
模型评估可视化
from sklearn.metrics import confusion_matrix
# 假设 y_true 和 y_pred 是真实标签和预测标签
cm = confusion_matrix(y_true, y_pred)
# 热力图显示混淆矩阵
plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, fmt="d", cmap="Blues",
xticklabels=iris.target_names,
yticklabels=iris.target_names)
plt.xlabel("预测标签")
plt.ylabel("真实标签")
plt.title("混淆矩阵")
plt.show()
小贴士: 使用 sns.set_palette() 可以设置全局调色板,推荐使用 "husl" 或 "Set2" 配色方案。
总结
Seaborn 让统计可视化变得简单优雅。结合 Matplotlib 的灵活性,你可以创建出专业级别的数据可视化图表。