🎨 Seaborn:高级数据可视化库
Seaborn 是建立在 Matplotlib 之上的数据可视化库,集成了更漂亮的默认主题、统计图形以及与 Pandas 的高度集成,适用于探索性数据分析(EDA)。
🧐 Seaborn 解决了什么问题?
虽然 Matplotlib 功能强大,但它对样式控制比较原始,绘制统计图不够方便。Seaborn 帮助我们:
- 快速绘制统计图(如分布图、箱线图、热图等)
- 自动与 Pandas 集成,支持 DataFrame
- 自动调色、美化图表,减少繁杂设置
🛠️ 基础使用
导入 seaborn 作为 sns
导入 matplotlib.pyplot 作为 plt
导入 seaborn 内置数据集
1️⃣ 分布图 sns.histplot()
/ sns.kdeplot()
显示变量的分布频率(直方图、密度图)。
sns.直方图(tips["total_bill"])
sns.密度图(tips["total_bill"])
plt.显示()
2️⃣ 散点图 sns.scatterplot()
可视化两个变量之间的关系。
<SmartCodeBlock
language="pymyet"
displayCode={`sns.散点图(x="total_bill", y="tip", 数据=tips)
plt.显示()`}
copyCode={`sns.scatterplot(x="total_bill", y="tip", data=tips)
plt.show()`}
/>
3️⃣ 分类图 sns.boxplot()
/ sns.violinplot()
/ sns.barplot()
用于展示分类变量与数值变量之间的关系。
箱线图(boxplot)
sns.箱线图(x="day", y="total_bill", 数据=tips)
plt.显示()
小提琴图(violinplot)
sns.小提琴图(x="day", y="tip", 数据=tips)
plt.显示()
4️⃣ 条形图 sns.barplot()
展示各组的平均值 + 误差条。
sns.条形图(x="sex", y="tip", 数据=tips)
plt.显示()
5️⃣ 热力图 sns.heatmap()
用于显示二维数据的热度强弱。
# 创建交叉表
透视 = tips.数据透视表(索引="day", 列="sex", 值="total_bill", 聚合="平均")
sns.热力图(透视, 注释=True, 格式=".1f", cmap="YlGnBu")
plt.显示()
6️⃣ 成对图 sns.pairplot()
一次性查看多个变量两两之间关系。
sns.成对图(tips, 色彩="sex")
plt.显示()
7️⃣ 设置主题风格
sns.设置风格("白网格")
sns.箱线图(x="day", y="total_bill", 数据=tips)
plt.显示()
✅ 常用风格设置
设置函数 | 参数取值 |
---|---|
sns.set_style() | "white" , "dark" , "whitegrid" , "darkgrid" , "ticks" |
sns.set_context() | "notebook" , "talk" , "paper" , "poster" |
sns.set_palette() | 调色板名称,如 "pastel" 、"deep" 、"muted" 、"Set2" 等 |
🎯 总结
图类型 | 函数名 | 功能描述 |
---|---|---|
直方图 | histplot() | 显示频率分布 |
密度图 | kdeplot() | 显示平滑概率密度函数 |
散点图 | scatterplot() | 两变量关系 |
条形图 | barplot() | 分类变量的均值 |
箱线图 | boxplot() | 显示中位数和异常值 |
小提琴图 | violinplot() | 分布 + 密度 |
热力图 | heatmap() | 表格数据可视化 |
成对图 | pairplot() | 所有变量两两关系图 |