自学内容网 自学内容网

Matplotlib 和 Seaborn 数据可视化实践

数据可视化是数据分析过程中非常重要的一部分,它能让我们快速理解数据的趋势和特征。Python 中的 MatplotlibSeaborn 是两个强大的可视化工具,分别适用于基础绘图和高级统计图表。

本博客将带你通过具体实践,学习如何使用 Matplotlib 和 Seaborn 进行数据可视化。


1. 环境准备

在开始之前,确保你已经安装了相关库:

pip install matplotlib seaborn pandas

我们还需要 Pandas 来加载和操作数据。


2. 基础绘图:Matplotlib

Matplotlib 是一个底层绘图库,提供了非常灵活的绘图功能,适合需要高度自定义的场景。

2.1 Matplotlib 基本用法

示例数据

我们使用随机生成的样本数据:

import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 创建简单折线图
plt.plot(x, y, label='sin(x)')
plt.title('Simple Line Plot')  # 标题
plt.xlabel('X-axis')          # X 轴标签
plt.ylabel('Y-axis')          # Y 轴标签
plt.legend()                  # 图例
plt.show()
输出效果

一个简单的折线图,展示了 sin(x) 的变化趋势。


2.2 Matplotlib 子图

我们可以用 plt.subplot 或者 plt.subplots 创建多个子图:

# 创建多个子图
fig, ax = plt.subplots(2, 2, figsize=(10, 8))

# 第一张子图:正弦波
ax[0, 0].plot(x, np.sin(x), color='blue')
ax[0, 0].set_title('Sine Wave')

# 第二张子图:余弦波
ax[0, 1].plot(x, np.cos(x), color='orange')
ax[0, 1].set_title('Cosine Wave')

# 第三张子图:散点图
ax[1, 0].scatter(x, np.random.rand(100), color='green')
ax[1, 0].set_title('Random Scatter')

# 第四张子图:柱状图
ax[1, 1].bar([1, 2, 3], [3, 5, 7], color='red')
ax[1, 1].set_title('Bar Chart')

plt.tight_layout()
plt.show()
输出效果

一个包含 4 个子图的可视化展示。


3. 高级统计图表:Seaborn

Seaborn 是基于 Matplotlib 的高级可视化工具,专注于统计图表的生成,同时提供更美观的默认样式。

3.1 Seaborn 样式

在 Seaborn 中,所有图表都默认采用较美观的样式,你可以通过以下方式设置主题:

import seaborn as sns

# 设置主题
sns.set_theme(style='darkgrid')  # 可选 'whitegrid', 'dark', 'ticks'

# 示例数据
tips = sns.load_dataset("tips")  # 加载示例数据集

# 绘制柱状图
sns.barplot(x='day', y='total_bill', data=tips)
plt.title('Average Total Bill by Day')
plt.show()

3.2 常见的 Seaborn 图表

以下是一些常见的 Seaborn 图表及其使用方式:

3.2.1 直方图
# 直方图
sns.histplot(tips['total_bill'], bins=20, kde=True, color='purple')
plt.title('Histogram of Total Bill')
plt.show()
3.2.2 箱线图
# 箱线图
sns.boxplot(x='day', y='total_bill', data=tips, palette='Set2')
plt.title('Boxplot of Total Bill by Day')
plt.show()
3.2.3 相关性热图
# 相关性热图
correlation = tips.corr()
sns.heatmap(correlation, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('Correlation Heatmap')
plt.show()
3.2.4 散点图
# 散点图
sns.scatterplot(x='total_bill', y='tip', hue='day', data=tips, palette='deep')
plt.title('Scatterplot of Tip vs Total Bill')
plt.show()

4. 实践案例:综合使用 Matplotlib 和 Seaborn

下面是一个综合案例:分析餐厅账单数据,展示每日消费总额和小费之间的关系。

# 加载数据集
import pandas as pd

# 按天分组,计算每日平均账单和小费
daily_stats = tips.groupby('day').agg({'total_bill': 'mean', 'tip': 'mean'}).reset_index()

# 使用 Seaborn 画柱状图
sns.barplot(x='day', y='total_bill', data=daily_stats, color='skyblue', label='Average Bill')
sns.barplot(x='day', y='tip', data=daily_stats, color='orange', label='Average Tip')

# 添加图例和标题
plt.legend(loc='upper left')
plt.title('Average Bill and Tip by Day')
plt.ylabel('Amount ($)')
plt.show()

5. 小技巧与优化

  1. 中文字体支持:如果需要显示中文,可以设置 Matplotlib 的字体:

    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文字体
    plt.rcParams['axes.unicode_minus'] = False    # 正常显示负号
    
  2. Seaborn 配色方案:Seaborn 提供了多种配色方案:

    sns.set_palette('husl')  # 设置配色
    
  3. 交互式图表:可以结合 Plotly 或 Bokeh 创建交互式图表。


6. 总结

  • Matplotlib:适合高度自定义的基础绘图,灵活但需要较多配置。
  • Seaborn:更注重统计数据的可视化,美观易用,非常适合快速生成专业图表。

通过学习以上内容,你可以轻松应对数据分析中的可视化任务。如果你希望更多深入学习,可以尝试结合真实业务场景,选择适合的图表类型进行分析和展示。


原文地址:https://blog.csdn.net/u012561308/article/details/144301631

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!