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

Python 数据可视化:用 Matplotlib 绘制多维度对比图表

Python 数据可视化:多维度对比图表实现指南

在数据分析中,多维度对比图表能直观展示多个变量间的关系。以下使用 Matplotlib 实现三种常用多维图表:

1. 平行坐标图 (Parallel Coordinates)

适用于比较多个连续变量的模式差异:

import matplotlib.pyplot as plt
from pandas.plotting import parallel_coordinates
import pandas as pd
from sklearn import datasets# 加载鸢尾花数据集
iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['species'] = [iris.target_names[i] for i in iris.target]# 创建平行坐标图
plt.figure(figsize=(10, 6))
parallel_coordinates(df, 'species', colormap='viridis')
plt.title('鸢尾花特征平行坐标图')
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()

2. 雷达图 (Radar Chart)

适用于比较多个分类变量的相对强度:

import numpy as np# 示例数据:三种产品在五个维度的评分
categories = ['设计', '性能', '续航', '安全性', '价格']
product_A = [4.2, 4.5, 3.8, 4.0, 3.5]
product_B = [3.8, 4.0, 4.2, 4.5, 4.0]
product_C = [4.5, 3.5, 4.0, 3.8, 4.2]# 角度计算
angles = np.linspace(0, 2 * np.pi, len(categories), endpoint=False).tolist()
angles += angles[:1]  # 闭合图形# 创建雷达图
fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(111, polar=True)# 绘制数据
def plot_radar(data, color, label):data += data[:1]ax.plot(angles, data, color=color, linewidth=2, label=label)ax.fill(angles, data, color=color, alpha=0.25)plot_radar(product_A, 'blue', '产品A')
plot_radar(product_B, 'green', '产品B')
plot_radar(product_C, 'red', '产品C')# 设置标签
ax.set_theta_offset(np.pi / 2)
ax.set_theta_direction(-1)
ax.set_thetagrids(np.degrees(angles[:-1]), categories)
ax.set_title('产品特性对比雷达图', pad=20)
ax.legend(loc='upper right')
plt.show()

3. 散点图矩阵 (Scatter Matrix)

适用于探索多个变量间的相关性:

from pandas.plotting import scatter_matrix# 创建散点图矩阵
plt.figure(figsize=(12, 10))
scatter_matrix(df.iloc[:, :4], diagonal='kde',   # 对角线显示核密度估计color=df['species'].map({'setosa':'blue', 'versicolor':'green', 'virginica':'red'}),alpha=0.8,marker='o',s=40)
plt.suptitle('鸢尾花特征散点图矩阵', y=0.95)
plt.tight_layout()
plt.show()

关键技巧:
  1. 数据标准化:使用 StandardScaler 确保不同量纲的变量可比
    from sklearn.preprocessing import StandardScaler
    scaled_data = StandardScaler().fit_transform(df.iloc[:, :4])
    

  2. 颜色编码:使用 c 参数表示第四维度
    plt.scatter(x, y, c=z, cmap='viridis')
    

  3. 交互式探索:结合 mplcursors 实现悬停提示
    import mplcursors
    mplcursors.cursor(hover=True)
    

三种图表适用场景:

  • 平行坐标图:分析>5个连续变量的模式差异
  • 雷达图:比较≤8个维度的分类数据
  • 散点图矩阵:探索变量间的相关性和分布

通过组合这些技术,可创建强大的多维数据探索工具,帮助发现数据中的隐藏模式和异常值。

http://www.dtcms.com/a/552852.html

相关文章:

  • 【axf文件解析与J-Link通讯实战(五)】PySide6图形界面与数据可视化集成
  • Android 权限管理:适配 Android 14 运行时权限申请(含后台定位)
  • 涡阳网站优化wordpress进入后台空白
  • 【实战案例】火语言 RPA 采集小说站已完结书名(自动翻页判断),保存到Excel 全流程(附完整脚本)
  • 基于微信小程序的背单词系统x1o5sz72(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 力扣hot100-------11、盛最多水的容器(java版)
  • Visual Basic 菜单编辑器
  • 本地部署轻量级持续集成工具 Drone CI 并实现外部访问
  • gitlab-ci中cicd+helm实现devops自动化部署到k8s
  • 网站欢迎页面怎么做江门建站公司模板
  • 评论回复网站怎么做郑州百度搜索优化
  • Rust开发之使用derive宏自动实现Trait(Clone、Debug)
  • 15. setState的更新是异步的吗
  • Qwen2.5-VL开源,斩获多榜单冠军!
  • Prometheus和Grafana简介
  • 基于深度学习的医疗器械分类编码映射系统:设计篇
  • Rust开发之自定义错误类型(实现Error trait)
  • 【Java Web学习 | 第三篇】CSS(2) - 元素显示模式
  • 10月31日
  • Mybatis-Plus实现MySQL分表
  • 兵团住房和城乡建设局网站网站设计标杆企业
  • 快充新标杆:AVS 协议如何重塑手机充电体验
  • LIUNX 与手机安卓的文件互传 的常用方法
  • 第一届数证杯做题笔记(流量分析和手机取证)
  • 【IO多路转接】深入解析 poll:从接口到服务器实现
  • 【Spring Boot】Spring Boot解决循环依赖
  • 网站开发发展趋势2018网上建立网站赚钱
  • SuperMap Hi-Fi 3D SDK for Unreal 使用蓝图接口加载多源数据
  • 【Java】如何使用jdbc连接并操作MySQL,一文读
  • SSM宠物寄养系统ih041gj7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。