目录
一、散点图
二、气泡图
三、相关图
四、热力图
五、二维密度图
六、平行坐标图
七、网络图

一、散点图(Scatter Plot)

特点:通过二维平面上的点分布展示两个变量的相关性,点的位置由变量值决定,可直观判断线性相关、非线性相关或无相关关系。
应用场景

  • 探索性数据分析(如身高与体重的相关性)。
  • 机器学习特征筛选(判断特征与目标变量的关联)。
  • 科学研究中变量关系验证(如温度与化学反应速率)。

Python实现

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

# 生成示例数据
np.random.seed(42)
x = np.random.normal(0, 1, 100)
y = 2 * x + np.random.normal(0, 0.5, 100)  # 线性相关

# 绘制散点图
plt.figure(figsize=(8, 6))
plt.scatter(x, y, color='skyblue', edgecolor='k', alpha=0.7)
plt.title('散点图:线性相关示例', fontsize=14)
plt.xlabel('变量X', fontsize=12)
plt.ylabel('变量Y', fontsize=12)
plt.grid(True, alpha=0.3)
plt.show()

# 计算相关系数
corr = np.corrcoef(x, y)[0, 1]
print(f"皮尔逊相关系数:{corr:.4f}")

结果如下:
在这里插入图片描述

结果:生成散点图显示点沿直线分布,相关系数接近1,表明强正相关。

二、气泡图(Bubble Chart)

特点:在散点图基础上增加第三个维度,用气泡大小表示数值,可展示三维数据的相关性。
应用场景

  • 市场分析(如产品价格、销量、利润的关系)。
  • 地理数据可视化(城市人口、GDP、面积的对比)。
  • 生物学研究(细胞大小、数量、活性的多变量分析)。

Python实现

# 生成三维数据
np.random.seed(42)
x = np.random.uniform(1, 10, 50)
y = np.random.uniform(1, 10, 50)
size = np.random.uniform(100, 500, 50)  # 气泡大小

# 绘制气泡图
plt.figure(figsize=(9, 7))
scatter = plt.scatter(x, y, s=size, c=size, cmap='viridis', alpha=0.7, edgecolor='k')
plt.colorbar(label='气泡大小(第三维度)')
plt.title('气泡图:三维数据可视化', fontsize=14)
plt.xlabel('变量X', fontsize=12)
plt.ylabel('变量Y', fontsize=12)
plt.grid(True, alpha=0.3)

# 添加示例标注
for i in range(3):
    plt.annotate(f'点{i+1}', (x[i], y[i]), xytext=(5, 5), 
                 textcoords='offset points')
plt.show()

结果如下:
在这里插入图片描述

结果:气泡大小和颜色随第三维度数值变化,可直观比较多变量关系。

三、相关图(Correlation Plot)

特点:展示多个变量间的相关系数矩阵,通常用颜色深浅表示相关强度,可快速识别变量对的相关性。
应用场景

  • 数据预处理(筛选高度相关的特征以避免多重共线性)。
  • 社会科学研究(如教育程度、收入、年龄的相关性分析)。
  • 金融领域(股票收益率的相关性矩阵)。

Python实现

# 生成多变量数据
np.random.seed(42)
n = 100
data = np.random.multivariate_normal(
    mean=[0, 0, 0, 0],
    cov=[[1, 0.7, 0.3, 0.1],
         [0.7, 1, 0.5, 0.2],
         [0.3, 0.5, 1, 0.6],
         [0.1, 0.2, 0.6, 1]],
    size=n
)
df = pd.DataFrame(data, columns=['A', 'B', 'C', 'D'])

# 计算相关系数矩阵
corr_matrix = df.corr()

# 绘制相关图
plt.figure(figsize=(10, 8))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt='.2f', 
            linewidths=1, cbar_kws={'label': '相关系数'})
plt.title('变量相关系数矩阵图', fontsize=16)
plt.show()

结果如下:
在这里插入图片描述

结果:热力图形式展示相关系数,颜色越暖(红)表示正相关越强,越冷(蓝)表示负相关越强。

四、热力图(Heatmap)

特点:用颜色矩阵展示二维数据的数值分布,适用于展示矩阵数据的相关性、频率或密度。
应用场景

  • 基因表达数据可视化(不同样本的基因表达强度)。
  • 时间序列分析(如年度气温变化热力图)。
  • 用户行为分析(网页点击热力图)。

Python实现

# 生成热力图数据(示例:月度销售数据)
months = list(range(1, 13))
products = [f'产品{i}' for i in range(1, 6)]
sales_data = np.random.randint(100, 1000, size=(5, 12))

# 转换为DataFrame
df_heatmap = pd.DataFrame(sales_data, index=products, columns=months)

# 绘制热力图
plt.figure(figsize=(12, 8))
sns.heatmap(df_heatmap, annot=True, cmap='YlGnBu', fmt='d', 
            linewidths=0.5, cbar_kws={'label': '销售量'})
plt.title('产品月度销售热力图', fontsize=16)
plt.xlabel('月份', fontsize=12)
plt.ylabel('产品类别', fontsize=12)
plt.show()

结果如下:
在这里插入图片描述

结果:颜色深浅直观显示不同产品在各月的销售差异,便于发现销售高峰和低谷。

五、二维密度图(2D Density Plot)

特点:通过颜色或等高线展示二维数据的分布密度,比散点图更适合大数据量的相关性可视化。
应用场景

  • 金融数据分布分析(如股票收益率的联合分布)。
  • 地理数据密度展示(人口密度、犯罪率热点区域)。
  • 物理学研究(粒子运动的二维概率密度)。

Python实现

# 生成二维正态分布数据
np.random.seed(42)
x = np.random.normal(0, 1, 1000)
y = 0.8 * x + np.random.normal(0, 0.5, 1000)

# 绘制二维密度图(核密度估计)
plt.figure(figsize=(9, 7))
sns.kdeplot(x=x, y=y, cmap='Reds', shade=True, shade_lowest=False)
plt.scatter(x, y, c='white', s=10, edgecolor='k', alpha=0.3)
plt.title('二维密度图:核密度估计', fontsize=14)
plt.xlabel('变量X', fontsize=12)
plt.ylabel('变量Y', fontsize=12)
plt.colorbar(label='密度')
plt.grid(True, alpha=0.2)
plt.show()

结果如下:
在这里插入图片描述

结果:颜色越深区域表示数据点越密集,结合散点图可同时观察整体分布和具体数据点。

六、平行坐标图(Parallel Coordinates Plot)

特点:用多条平行坐标轴展示多维数据,每条线代表一个样本,线的交叉点表示该样本在各维度的值,可识别多维变量的相关性模式。
应用场景

  • 医疗数据分析(患者多指标特征的对比)。
  • 客户分群(多维度属性的客户特征可视化)。
  • 工程数据监测(多传感器数据的异常检测)。

Python实现

from pandas.plotting import parallel_coordinates

# 生成多维数据(示例:3类样本,4个特征)
np.random.seed(42)
data = np.random.randn(100, 4)
# 构造三类样本
class1 = data[:30] + [2, 2, -1, -1]
class2 = data[30:60] + [0, 0, 0, 0]
class3 = data[60:100] + [-2, -2, 1, 1]
df_parallel = pd.DataFrame(np.vstack([class1, class2, class3]), 
                          columns=[f'特征{i+1}' for i in range(4)])
df_parallel['类别'] = ['类别1']*30 + ['类别2']*30 + ['类别3']*40

# 绘制平行坐标图
plt.figure(figsize=(12, 8))
parallel_coordinates(df_parallel, '类别', colormap=plt.cm.Set1)
plt.title('多维数据平行坐标图', fontsize=16)
plt.grid(True, alpha=0.3)
plt.show()

结果如下:

在这里插入图片描述
结果:不同颜色的线条代表不同类别,可观察各类别在不同特征上的分布差异及特征间的关联模式。

七、网络图(Network Diagram)

特点:用节点和边展示变量间的关联关系,边的粗细或颜色可表示相关强度,适用于展示复杂网络中的相关性。
应用场景

  • 社交网络分析(用户互动关系强度)。
  • 基因调控网络(基因间的调控相关性)。
  • 金融风险传导(银行间的风险关联网络)。

Python实现

import networkx as nx

# 生成网络数据(节点间的相关系数)
np.random.seed(42)
nodes = ['A', 'B', 'C', 'D', 'E', 'F']
edges = [('A', 'B', 0.7), ('A', 'C', 0.5), ('B', 'D', 0.8), 
         ('B', 'E', 0.4), ('C', 'E', 0.6), ('D', 'F', 0.3),
         ('E', 'F', 0.5)]  # (节点1, 节点2, 相关系数)

# 创建网络图
G = nx.Graph()
G.add_nodes_from(nodes)
G.add_weighted_edges_from(edges)

# 绘制网络图
plt.figure(figsize=(10, 8))
pos = nx.spring_layout(G, seed=42)  # 布局算法
# 边的宽度根据相关系数调整
edge_width = [2 * d['weight'] for u, v, d in G.edges(data=True)]
# 节点颜色根据度数调整(可选)
node_color = [G.degree(n) for n in nodes]

nx.draw(G, pos, with_labels=True, node_size=2000, node_color=node_color,
        cmap='viridis', font_size=12, font_weight='bold',
        edge_color='black', width=edge_width)
# 添加边的权重标签
edge_labels = {(u, v): f"{d['weight']:.1f}" for u, v, d in G.edges(data=True)}
nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels)

plt.title('变量关联网络图', fontsize=16)
plt.axis('off')
plt.tight_layout()
plt.show()

结果如下:
在这里插入图片描述

结果:节点大小和颜色可表示节点重要性,边的粗细表示相关强度,直观展示复杂网络中的关联结构。

总结

相关类可视化图表通过不同维度和形式展示变量间的关联关系,核心作用包括:

  1. 探索性分析:快速识别变量间的线性/非线性相关、聚类模式或异常点(如散点图、二维密度图)。
  2. 多维关系展示:处理三维及以上数据时,气泡图、平行坐标图和网络图提供了直观的维度扩展方案。
  3. 模式识别:热力图和相关图适合批量展示变量对的相关性,便于特征筛选或矩阵分析。
  4. 复杂网络建模:网络图能揭示变量间的拓扑关联,适用于社交、生物等复杂系统。

相关类可视化图表特点、优缺点及使用场景总结表

图表类型 核心特点 优点 缺点 典型使用场景
散点图 二维平面中用点展示两变量关系,点位置由变量值决定,直观呈现线性/非线性关联。 简单直观,易理解变量间相关性
可识别异常值和数据分布模式
仅适用于两变量分析
大数据量时易重叠,影响可读性
探索身高与体重、气温与用电量等两变量关系
机器学习特征初步筛选
气泡图 在散点图基础上增加第三维度,用气泡大小表示数值,展示三维数据关联。 可同时展示三个变量的关系
通过气泡大小突出关键数据点
气泡重叠时难以准确读取数值
过多维度可能导致视觉混乱
市场分析(价格、销量、利润)
地理数据(人口、GDP、面积)多变量展示
相关图(热图) 以矩阵形式展示变量相关系数,用颜色深浅表示相关强度,快速识别变量对关联。 全局展示多变量相关性
颜色编码直观反映正负相关及强度
便于特征筛选
仅展示线性相关关系
无法体现非线性关联
变量过多时矩阵过大难以解读
数据预处理阶段特征相关性分析
金融市场多资产收益率关联分析
热力图 用颜色矩阵展示二维数据的数值分布(如频率、密度、强度),适用于矩阵数据可视化。 高效展示大面积数据的密度或强度模式
颜色渐变清晰呈现数据高低峰区域
需提前定义网格划分,可能丢失细节
非专业用户对颜色映射的理解可能有偏差
基因表达数据可视化
用户网页点击热力图分析
年度气温分布展示
二维密度图 通过颜色或等高线展示数据的二维分布密度,适合大数据量的相关性可视化。 平滑展示数据分布趋势,避免散点重叠问题
可识别数据聚集区域和概率密度模式
丢失具体数据点信息
难以定位个别异常值
金融资产收益率联合分布分析
地理人口密度可视化
物理实验概率密度研究
平行坐标图 用多条平行坐标轴展示多维数据,每条线代表样本,通过线条走势识别变量间模式。 高效展示多维数据的整体分布和变量间关联
便于发现不同样本群体的特征差异
维度过多时线条混乱,可读性下降
非直观的可视化形式,需一定学习成本
医疗多指标(血压、血糖、胆固醇等)患者数据对比
客户分群多维度属性分析
网络图 用节点和边展示变量关联关系,边的粗细/颜色表示相关强度,适用于复杂网络建模。 直观呈现复杂系统中的关联结构
可突出关键节点(枢纽节点)和连接模式
布局算法复杂,大规模网络易混乱
定量分析需结合数值指标
社交网络关系分析
基因调控网络可视化
供应链风险传导路径展示
Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐