Matplotlib 和 Seaborn 数据可视化实践
数据可视化是数据分析过程中非常重要的一部分,它能让我们快速理解数据的趋势和特征。Python 中的 Matplotlib 和 Seaborn 是两个强大的可视化工具,分别适用于基础绘图和高级统计图表。
本博客将带你通过具体实践,学习如何使用 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. 小技巧与优化
-
中文字体支持:如果需要显示中文,可以设置 Matplotlib 的字体:
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文字体 plt.rcParams['axes.unicode_minus'] = False # 正常显示负号
-
Seaborn 配色方案:Seaborn 提供了多种配色方案:
sns.set_palette('husl') # 设置配色
-
交互式图表:可以结合 Plotly 或 Bokeh 创建交互式图表。
6. 总结
- Matplotlib:适合高度自定义的基础绘图,灵活但需要较多配置。
- Seaborn:更注重统计数据的可视化,美观易用,非常适合快速生成专业图表。
通过学习以上内容,你可以轻松应对数据分析中的可视化任务。如果你希望更多深入学习,可以尝试结合真实业务场景,选择适合的图表类型进行分析和展示。
原文地址:https://blog.csdn.net/u012561308/article/details/144301631
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!