HoRain云--Python数据可视化:Matplotlib与Seaborn实战指南

🎬 HoRain 云小助手:个人主页
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
目录

用 Matplotlib 和 Seaborn 进行数据可视化是 Python 数据分析的核心技能。下面这张表格帮你快速把握它们的核心定位,然后我们再深入具体的用法。
|
特性维度 |
Matplotlib |
Seaborn |
|---|---|---|
|
定位 |
基础且功能全面的绘图库,提供像素级的精细控制 |
基于Matplotlib的高级统计绘图库,默认样式美观,API简洁 |
|
核心优势 |
灵活性强,几乎能绘制任何类型的图表;自定义程度极高 |
专为统计可视化设计,通常只需一行代码就能生成信息丰富的统计图形 |
|
适用场景 |
需要高度定制化的图表、出版级图形、非标准图表 |
快速进行数据探索、制作统计图表(如分布、关系、分类数据可视化) |
|
语法风格 |
显式且相对底层,需要手动设置许多细节 |
声明式且高级,与Pandas的DataFrame无缝集成,很多细节自动处理 |
|
默认样式 |
基础样式比较简洁 |
提供多种精美的主题和颜色方案,图表默认更具吸引力 |
🔧 基础工作流程
开始绘图前,需要先搭建好环境并准备好数据。
-
安装与导入
确保已安装必要的库。如果尚未安装,可以使用 pip 命令安装:
pip install matplotlib seaborn pandas numpy在代码中,通常这样导入:
import matplotlib.pyplot as plt # 导入Matplotlib的绘图模块 import seaborn as sns # 导入Seaborn import pandas as pd # 用于数据处理 import numpy as np # 用于数值计算 -
数据准备
数据通常存储在 Pandas 的 DataFrame 中。Seaborn 尤其擅长直接处理 DataFrame。
# 示例:创建数据 data = { 'Category': ['A', 'B', 'C', 'A', 'B', 'C'], 'Values': [10, 15, 7, 12, 18, 5], 'Number': [1, 2, 3, 4, 5, 6] } df = pd.DataFrame(data) # Seaborn内置了一些经典数据集,便于练习 tips = sns.load_dataset("tips") # 加载小费数据集
📈 使用 Matplotlib 绘图
Matplotlib 提供了细致的控制,适合需要精确自定义的图表。
-
基础框架与常用图表
最简单的流程是创建图形、绘制、然后添加标签和显示。
# 创建图形和坐标轴 plt.figure(figsize=(8, 6)) # figsize设置图形大小(宽×高,单位英寸) # 绘制折线图 x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.plot(x, y, marker='o', linestyle='--', color='blue', label='示例线') # marker:点标记, linestyle:线型 # 添加标签和标题 plt.xlabel('X轴标签') plt.ylabel('Y轴标签') plt.title('一个简单的折线图') plt.legend() # 显示图例 # 显示图形 plt.show()绘制散点图使用
plt.scatter(),柱状图使用plt.bar()。 -
面向对象(OO)风格(推荐)
对于复杂图形,使用面向对象风格能更清晰、灵活地控制子图。
# 创建包含子图的画布:1行2列 fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5)) # 在第一个子图上绘制 ax1.plot(x, y, 'r-') # 'r-' 代表红色实线 ax1.set_title('子图1') # 在第二个子图上绘制 ax2.bar(df['Category'], df['Values']) ax2.set_title('子图2') # 自动调整布局 fig.tight_layout() plt.show()
📊 使用 Seaborn 绘图
Seaborn 简化了许多常见统计图表的绘制过程。
-
设置主题
在绘图前设置主题,可快速美化所有图表(包括Matplotlib绘制的图形)。
sns.set_theme(style="whitegrid") # 设置主题风格,如 whitegrid, darkgrid, ticks 等 -
绘制常见统计图表
散点图与关系图:观察两个连续变量之间的关系。
# 使用Seaborn内置tips数据集 tips = sns.load_dataset("tips") sns.scatterplot(data=tips, x='total_bill', y='tip', hue='time', style='smoker', size='size') plt.title('小费与总账单金额关系') plt.show()分布图:查看单个变量的分布情况。
# 直方图与密度曲线 sns.histplot(data=tips, x='total_bill', kde=True) # kde=True 增加密度曲线 plt.show() # 箱线图:观察分布、中位数、异常值 sns.boxplot(data=tips, x='day', y='total_bill') plt.show()热力图:展示变量间的相关性矩阵。
# 计算数值型列之间的相关系数 correlation_matrix = tips.select_dtypes(include=[np.number]).corr() sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm') # annot=True 显示数值 plt.title('变量相关性热力图') plt.show()
🤝 协同使用 Matplotlib 与 Seaborn
可以利用 Seaborn 快速绘制出美观的统计图形,然后使用 Matplotlib 进行细节上的微调。
# 使用面向对象风格创建画布和坐标轴
fig, ax = plt.subplots(figsize=(10, 6))
# 用Seaborn在指定坐标轴上绘图
sns.boxplot(data=tips, x='day', y='total_bill', ax=ax)
# 用Matplotlib精细调整
ax.set_title('每日账单金额分布(精细化调整后)', fontsize=16)
ax.set_xlabel('星期几', fontsize=12)
ax.set_ylabel('总账单金额(美元)', fontsize=12)
ax.tick_params(axis='x', rotation=45) # 调整X轴标签角度
plt.tight_layout()
plt.show()
💡 实用技巧与最佳实践
-
图表选择:根据目标和数据特点选择最合适的图表类型。例如,比较类别间数值用柱状图,查看趋势用折线图,观察分布用直方图或箱线图,探索关系用散点图。
-
避免图表信息过载:数据点过多时,可调整点透明度(
alpha参数)、进行数据采样或使用聚合图表(如二维直方图)来增强可读性。 -
颜色与样式:优先选择色盲友好的配色方案。Seaborn 的
color_palette()函数提供了多种精心设计的调色板。 -
清晰标注:确保图表有明确的标题、坐标轴标签。必要时使用图例。这是有效传达信息的关键。
-
探索性数据分析(EDA):在深入复杂分析前,多用散点图、直方图、箱线图等快速浏览数据分布、异常值和变量间关系。
💎 核心要点总结
-
Matplotlib 是基础且强大的绘图库,可控性极高,适合绘制各种图表并进行精细化定制。
-
Seaborn 是基于 Matplotlib 的高级封装,默认美观,擅长统计可视化,能大幅提升探索性数据分析的效率。
-
实践中,协同使用两者是最佳方式:用 Seaborn 快速出图,用 Matplotlib 的丰富接口做后期调整。
希望这些介绍能助你顺利开启数据可视化之旅!试着用示例代码操作一下,慢慢就能掌握如何为你的数据选择最合适的“语言”来讲述故事。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
更多推荐




所有评论(0)