Python 基础入门 Day18

欢迎来到 Python 基础入门 Day18!在 Day17 中,我们学习了 Seaborn 的基础知识,并使用它绘制了多种统计图表。今天,我们将更进一步,探索 Seaborn 与 Matplotlib 的结合使用,实现更加复杂和自定义的可视化效果。


目录

  1. Seaborn 与 Matplotlib 的关系
  2. 自定义图表标题和坐标轴
  3. 调整子图布局
  4. 组合多种图表
  5. 自定义调色板和样式
  6. 小结与练习

一、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 提供多种内置调色板,例如 deepmutedpastel,也可以通过 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,创建更加个性化和灵活的图表。掌握这项技能,你可以为数据分析报告制作更专业的可视化内容。

今日练习题:

  1. 使用 plt.subplots() 绘制一个包含 2 行 2 列的图表网格,分别展示:
    • 消费金额分布
    • 小费金额分布
    • 消费金额与小费的关系
    • 用餐人数与小费的关系
  2. 使用自定义调色板和样式,绘制一个关于 tips 数据集的分类图。
  3. 尝试结合 matplotlib 的注释功能,在图表中标注重要信息。

下一节预告:在 Day19 中,我们将开始学习更高级的 Python 数据科学工具包:Pandas 的核心功能。敬请期待!


希望今天的内容对你有所帮助!如果有任何问题或建议,欢迎随时讨论 😊。

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注