当前位置:首页 > Python > 正文

Python绘制散点图的两种方法详解 | 数据可视化教程

Python绘制散点图的两种方法详解

使用matplotlib和seaborn创建专业散点图

为什么使用散点图?

散点图是数据可视化中最常用的图表之一,用于展示两个变量之间的关系。它可以清晰地显示:

  • 两个变量之间的相关性(正相关、负相关或无相关)
  • 数据点的分布情况
  • 异常值的识别
  • 数据集群的存在

在Python中,我们主要使用matplotlibseaborn这两个库来创建散点图。

方法一:使用Matplotlib

matplotlib是Python中最基础、最广泛使用的绘图库,提供了高度灵活的绘图功能。

安装Matplotlib

pip install matplotlib

基础散点图代码

import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据
np.random.seed(42)
x = np.random.rand(50)
y = 2 * x + np.random.normal(0, 0.1, 50)

# 创建散点图
plt.figure(figsize=(8, 6))
plt.scatter(x, y, color='blue', alpha=0.7, edgecolors='w', s=80)

# 添加标题和标签
plt.title('基础散点图示例', fontsize=14)
plt.xlabel('X轴变量', fontsize=12)
plt.ylabel('Y轴变量', fontsize=12)

# 添加网格
plt.grid(True, linestyle='--', alpha=0.6)

# 显示图表
plt.show()

Matplotlib散点图特点

  • 高度可定制化 - 可以调整每个元素的样式
  • 支持多种标记形状和颜色映射
  • 可以轻松添加回归线、注释等元素
  • 是其他高级可视化库的基础

方法二:使用Seaborn

seaborn是基于matplotlib的高级可视化库,提供更美观的默认样式和更简洁的API。

安装Seaborn

pip install seaborn

高级散点图代码

import seaborn as sns
import pandas as pd

# 创建示例数据
data = {
    'X': np.random.randn(100),
    'Y': np.random.randn(100),
    'Category': np.random.choice(['A', 'B', 'C'], 100),
    'Size': np.random.randint(10, 100, 100)
}
df = pd.DataFrame(data)

# 创建散点图
plt.figure(figsize=(9, 6))
sns.scatterplot(
    data=df,
    x='X',
    y='Y',
    hue='Category',  # 按类别着色
    size='Size',     # 按大小区分
    sizes=(30, 200), # 大小范围
    alpha=0.8,
    palette='viridis'
)

# 添加标题和样式
plt.title('高级散点图示例', fontsize=14)
sns.despine()  # 移除上方和右侧边框
plt.grid(axis='both', linestyle='--', alpha=0.6)

# 显示图例
plt.legend(title='类别', bbox_to_anchor=(1.05, 1), loc='upper left')

plt.tight_layout()
plt.show()

Seaborn散点图优势

  • 美观的默认样式和配色方案
  • 轻松处理DataFrame数据结构
  • 内置支持分类变量着色和分组
  • 自动添加统计信息(如回归线)
  • 简化了多变量数据可视化

两种方法对比

特性 Matplotlib Seaborn
学习曲线 较陡峭 较平缓
默认样式 基础 美观现代
API简洁性 较低 较高
多变量支持 需手动实现 内置支持
统计图表集成 有(如回归图)
定制灵活性 非常高 中等(可结合matplotlib)

选择建议:

  • 对于简单散点图或需要高度定制的场景,使用matplotlib
  • 对于多变量探索、美观的默认输出或快速原型,使用seaborn
  • 在实际项目中,通常结合使用两者:用seaborn创建基础图表,再用matplotlib进行细节调整

散点图进阶技巧

1. 添加回归线

# 使用seaborn添加回归线
sns.regplot(x='X', y='Y', data=df, 
            scatter_kws={'alpha':0.4}, 
            line_kws={'color':'red'})

2. 气泡图(大小映射)

# 使用matplotlib创建气泡图
plt.scatter(x, y, s=sizes, c=colors, 
            alpha=0.5, cmap='viridis')
plt.colorbar()  # 添加颜色条

3. 分类散点图

# 使用seaborn绘制分类散点图
sns.catplot(x='category', y='value', 
            hue='sub_category', data=df,
            kind='strip', height=6, aspect=1.5)

© 2023 Python数据可视化教程 | 散点图绘制方法详解

发表评论