当前位置:首页 > 技术 > 正文内容

Matplotlib 散点图:数据关系的可视化

访客 技术 2026年5月28日 1

散点图基础

散点图是数据可视化中最常用的图表之一,它通过在二维坐标系中绘制点来展示两个变量之间的关系。每个点的位置由其对应的两个变量值决定,非常适合用于观察数据分布、发现趋势或识别异常值。

1. 绘制基本散点图

首先,我们来看如何使用 Matplotlib 的 scatter 函数绘制一个简单的散点图。这个示例将展示两个变量之间的二次关系。

# 导入必要的库
import numpy as np
import matplotlib.pyplot as plt

# 生成示例数据
# 创建一个从 -5 到 5 的等差数列
x_values = np.linspace(-5, 5, 25)
# 创建一个与 x_values 相关的 y 值,并添加一些随机噪声
y_values = 2 * x_values**2 + np.random.normal(0, 8, 25)

# 创建画布
plt.figure(figsize=(8, 5))

# 绘制散点图
plt.scatter(x_values, y_values, s=60, c='#1f77b4', alpha=0.7, label='数据点')

# 添加图例和标签
plt.legend()
plt.xlabel('X 轴变量')
plt.ylabel('Y 轴变量')
plt.title('基本散点图示例')

# 显示图形
plt.show()

2. 带分类标签的散点图

在许多场景下,我们需要根据数据的类别(或标签)来着色散点。这有助于我们直观地观察不同类别数据在特征空间中的分布情况。

# 导入用于生成合成数据的库
from sklearn.datasets import make_blobs

# 生成具有三个类别的合成数据
features, labels = make_blobs(n_samples=100, centers=3, cluster_std=2.0, random_state=42)

# 定义颜色映射
color_palette = ['#ff7f0e', '#2ca02c', '#d62728']

# 创建画布
plt.figure(figsize=(8, 6))

# 根据类别循环绘制散点
for i in range(3):
    plt.scatter(features[labels == i, 0], features[labels == i, 1], 
                s=50, c=color_palette[i], label=f'类别 {i}')

# 添加图例和标题
plt.legend()
plt.title('带分类标签的散点图')
plt.xlabel('特征 1')
plt.ylabel('特征 2')

# 显示图形
plt.show()

3. 使用真实数据集进行实战

让我们使用一个真实的数据集来创建一个更复杂的散点图。这里我们使用 Seaborn 内置的 "iris" 数据集,它包含了三种不同鸢尾花的测量数据。

# 导入数据分析和可视化库
import seaborn as sns
import matplotlib.pyplot as plt

# 加载内置的 iris 数据集
iris_df = sns.load_dataset('iris')

# 提取唯一的物种类别
species_list = iris_df['species'].unique()

# 为每个物种分配一种颜色
color_map = plt.cm.tab10
colors = [color_map(i / float(len(species_list) - 1)) for i in range(len(species_list))]

# 设置图形样式
plt.style.use('seaborn-whitegrid')
plt.figure(figsize=(12, 8))

# 循环绘制每个物种的散点
for i, species in enumerate(species_list):
    subset = iris_df[iris_df['species'] == species]
    plt.scatter(subset['sepal_length'], subset['sepal_width'], 
                s=80, c=[colors[i]], label=species, alpha=0.8)

# 设置坐标轴范围和标签
plt.xlim(4, 8)
plt.ylim(2, 4.5)
plt.xlabel('花萼长度 (cm)', fontsize=14)
plt.ylabel('花萼宽度 (cm)', fontsize=14)
plt.title('鸢尾花数据集:花萼长度 vs 花萼宽度', fontsize=16)
plt.legend(fontsize=12)

# 显示图形
plt.show()

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。