欢迎来到 Python 基础入门 Day18!在 Day17 中,我们学习了 Seaborn 的基础知识,并使用它绘制了多种统计图表。今天,我们将更进一步,探索 Seaborn 与 Matplotlib 的结合使用,实现更加复杂和自定义的可视化效果。
目录
- Seaborn 与 Matplotlib 的关系
- 自定义图表标题和坐标轴
- 调整子图布局
- 组合多种图表
- 自定义调色板和样式
- 小结与练习
一、Seaborn 与 Matplotlib 的关系
Seaborn 是基于 Matplotlib 构建的,Seaborn 的绘图功能实际上调用了 Matplotlib 的底层绘图引擎。因此,你可以在 Seaborn 图表中嵌套 Matplotlib 的方法,从而获得更高的灵活性。
例如,可以在绘制 Seaborn 图表后,使用 Matplotlib 添加自定义的标题、标签或注释。
二、自定义图表标题和坐标轴
2.1 使用 Matplotlib 添加标题
Seaborn 本身支持 plt.title()
和 plt.xlabel()
等 Matplotlib 方法:
import seaborn as sns
import matplotlib.pyplot as plt
# 加载数据集
tips = sns.load_dataset("tips")
# 绘制 Seaborn 图表
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="time")
# 添加标题和坐标轴标签
plt.title("Relationship Between Total Bill and Tip")
plt.xlabel("Total Bill (USD)")
plt.ylabel("Tip Amount (USD)")
plt.show()
2.2 调整字体大小和样式
通过 Matplotlib,可以自定义字体大小和样式:
plt.title("Total Bill vs Tip", fontsize=16, fontweight='bold')
plt.xlabel("Total Bill (USD)", fontsize=12)
plt.ylabel("Tip (USD)", fontsize=12)
三、调整子图布局
Seaborn 与 Matplotlib 的子图布局完美兼容。通过 plt.subplots()
,可以创建多个子图并分别绘制不同图表。
示例:绘制多个子图
fig, axes = plt.subplots(1, 2, figsize=(12, 6))
# 子图 1: 总账单分布
sns.histplot(data=tips, x="total_bill", kde=True, ax=axes[0])
axes[0].set_title("Distribution of Total Bill")
# 子图 2: 小费与用餐人数的关系
sns.scatterplot(data=tips, x="size", y="tip", ax=axes[1])
axes[1].set_title("Tip vs Party Size")
plt.tight_layout()
plt.show()
四、组合多种图表
有时,我们希望在一张图中组合多种图表类型。例如,将数据分布图和箱线图放在一起。
示例:箱线图 + 数据分布
sns.boxplot(data=tips, x="day", y="total_bill", whis=[0, 100])
sns.stripplot(data=tips, x="day", y="total_bill", color="0.3", alpha=0.7)
plt.title("Total Bill Distribution by Day")
plt.show()
五、自定义调色板和样式
Seaborn 提供多种内置调色板,例如 deep
、muted
和 pastel
,也可以通过 Matplotlib 自定义颜色。
5.1 使用内置调色板
sns.set_palette("muted")
sns.histplot(data=tips, x="total_bill", hue="sex", multiple="stack")
plt.title("Distribution of Total Bill by Gender")
plt.show()
5.2 自定义调色板
custom_palette = sns.color_palette(["#2ecc71", "#e74c3c", "#3498db"])
sns.set_palette(custom_palette)
sns.boxplot(data=tips, x="time", y="total_bill", hue="sex")
plt.title("Customized Palette Example")
plt.show()
5.3 设置图表样式
sns.set_style("whitegrid")
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="sex")
plt.title("Scatterplot with Whitegrid Style")
plt.show()
六、小结与练习
今天,我们学习了如何结合 Seaborn 和 Matplotlib,创建更加个性化和灵活的图表。掌握这项技能,你可以为数据分析报告制作更专业的可视化内容。
今日练习题:
- 使用
plt.subplots()
绘制一个包含 2 行 2 列的图表网格,分别展示:- 消费金额分布
- 小费金额分布
- 消费金额与小费的关系
- 用餐人数与小费的关系
- 使用自定义调色板和样式,绘制一个关于
tips
数据集的分类图。 - 尝试结合
matplotlib
的注释功能,在图表中标注重要信息。
下一节预告:在 Day19 中,我们将开始学习更高级的 Python 数据科学工具包:Pandas 的核心功能。敬请期待!
希望今天的内容对你有所帮助!如果有任何问题或建议,欢迎随时讨论 😊。