总结相关类相关的可视化图像

在数据分析与探索过程中,可视化图像是理解数据特征和变量关系的重要工具。相关类可视化图像,如散点图、气泡图、相关图、热力图和二维密度图,能帮助我们直观洞察数据间的相关性与分布模式。以下将对这些图表进行更丰富的分析,并给出详细代码实现。
一、散点图(Scatter Plot)
1.1 特点剖析
散点图是通过将两个变量分别映射到直角坐标系的横轴和纵轴,用点的位置展示数据分布的可视化图表。其核心特点在于:
  • 直观呈现关系趋势:数据点的分布形态能直接反映两个变量间的线性或非线性关系。例如,当点呈现从左下到右上的趋势时,说明两个变量可能存在正相关;若呈左上到右下趋势,则可能为负相关。
  • 异常值检测:远离数据主体分布的点即为异常值,通过散点图可快速识别。如在分析学生成绩与学习时间关系时,某个学生学习时间短但成绩极高的点就可能是异常值,需进一步探究原因。
  • 数据分布观察:能展示数据在二维空间中的疏密程度,判断数据是否集中或分散。
1.2 应用场景拓展
  • 经济领域:分析 GDP 增长率与通货膨胀率的关系,帮助政策制定者了解经济指标间的关联,制定合理的经济政策。
  • 医学研究:研究药物剂量与疗效的关系,确定最佳用药剂量,提高治疗效果。
  • 市场调研:分析消费者年龄与购买频率的关系,为产品定位和营销策略提供依据。
1.3 Python 实现与详解
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 创建模拟数据,通过设置随机种子确保结果可复现
np.random.seed(42)
x = np.random.normal(0, 1, 100)  # 生成均值为0,标准差为1的100个随机数
y = 2 * x + np.random.normal(0, 0.5, 100)  # 模拟y与x的线性关系,加入噪声
data = pd.DataFrame({'X变量': x, 'Y变量': y})

# 绘制散点图
plt.figure(figsize=(8, 6))  # 设置画布大小
sns.scatterplot(x='X变量', y='Y变量', data=data, color='red', s=50)  # 绘制散点图,指定颜色和点大小
plt.title('散点图:X与Y的线性关系')  # 添加标题
plt.xlabel('X变量')  # 添加x轴标签
plt.ylabel('Y变量')  # 添加y轴标签
plt.grid(True, alpha=0.3)  # 添加网格线,设置透明度
plt.show()

# 输出相关系数,使用pandas的corr方法计算皮尔逊相关系数
corr = data.corr().iloc[0, 1]
print(f'皮尔逊相关系数:{corr:.4f}')

 

 

二、气泡图(Bubble Chart)
2.1 特点解析
气泡图是散点图的扩展,在展示两个变量关系的基础上,通过气泡的大小引入第三个变量,通过颜色引入第四个变量。其特点如下:
  • 多维数据展示:能够同时呈现三个甚至四个维度的数据,适用于复杂数据关系的展示。
  • 视觉对比强烈:气泡大小和颜色的差异能快速吸引注意力,便于比较不同数据点在多个维度上的差异。
  • 信息密度高:在有限空间内传达丰富信息,但过多维度可能导致图表复杂难懂。
2.2 应用场景延伸
  • 企业战略分析:分析不同产品线的销售额、利润和市场份额,确定重点发展产品。
  • 教育领域:展示不同学校的学生人数、平均成绩和师资力量,评估学校综合实力。
  • 环境研究:呈现不同地区的污染排放量、人口数量和绿化面积,制定环保政策。
2.3 Python 实现与说明
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 创建模拟数据
np.random.seed(42)
countries = [f'国家{i}' for i in range(1, 11)]
gdp = np.random.uniform(10000, 80000, 10)  # 模拟各国GDP
life_exp = np.random.uniform(65, 85, 10)  # 模拟预期寿命
population = np.random.uniform(1e6, 1e8, 10) * 0.01  # 模拟人口数量,调整大小范围

data = pd.DataFrame({
    '国家': countries,
    '人均GDP(美元)': gdp,
    '预期寿命(岁)': life_exp,
    '人口(百万)': population
})

# 绘制气泡图
plt.figure(figsize=(10, 7))
scatter = plt.scatter(
    data['人均GDP(美元)'], 
    data['预期寿命(岁)'], 
    s=data['人口(百万)'] * 100,  # 气泡大小与人口成正比
    c=data['人口(百万)'],       # 颜色随人口变化
    cmap='viridis',
    alpha=0.7,
    edgecolor='k'
)
plt.colorbar(label='人口(百万)')  # 添加颜色条说明

# 添加数据标签,为每个气泡标注国家名称
for i, txt in enumerate(data['国家']):
    plt.annotate(txt, (data['人均GDP(美元)'][i], data['预期寿命(岁)'][i]), 
                 xytext=(5, 5), textcoords='offset points')

plt.title('气泡图:人均GDP、预期寿命与人口的关系')  # 添加标题
plt.xlabel('人均GDP(美元)')  # 添加x轴标签
plt.ylabel('预期寿命(岁)')  # 添加y轴标签
plt.grid(True, alpha=0.3)  # 添加网格线
plt.show()

 

三、相关图(Correlation Plot)
3.1 特点深入理解
相关图主要用于展示多个变量之间的线性相关系数,常见以热力图形式呈现。其关键特点有:
  • 全局关系展示:一次性呈现多个变量间的两两相关性,快速了解变量间的整体关联结构。
  • 量化与可视化结合:通过数值和颜色双重编码相关系数,颜色深浅表示相关性强弱,数值明确相关程度。
  • 特征筛选辅助:帮助数据分析师识别高度相关的变量,避免机器学习模型中的多重共线性问题。
3.2 应用场景深化
  • 金融市场分析:分析不同股票收益率之间的相关性,构建投资组合,降低风险。
  • 生物信息学:研究基因表达数据中不同基因之间的相关性,探索生物过程和疾病机制。
  • 社会科学研究:分析社会经济指标之间的相关性,揭示社会现象的内在联系。
3.3 Python 实现与解读
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 创建模拟数据集
np.random.seed(42)
n = 200
x1 = np.random.normal(0, 1, n)
x2 = 0.8 * x1 + np.random.normal(0, 0.3, n)  # 强正相关
x3 = -0.6 * x1 + np.random.normal(0, 0.4, n)  # 强负相关
x4 = 0.3 * x1 + np.random.normal(0, 0.7, n)  # 弱正相关
x5 = np.random.normal(0, 1, n)  # 不相关

data = pd.DataFrame({
    '变量1': x1,
    '变量2': x2,
    '变量3': x3,
    '变量4': x4,
    '变量5': x5
})

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

# 绘制相关图(热力图形式)
plt.figure(figsize=(10, 8))
sns.heatmap(
    corr_matrix,
    annot=True,            # 显示相关系数数值
    cmap='coolwarm',       # 颜色映射
    vmin=-1, vmax=1,       # 数值范围
    fmt='.2f',             # 数值精度
    square=True,           # 矩阵正方形
    linewidths=0.5,        # 网格线
    cbar_kws={'label': '相关系数'}
)
plt.title('变量间相关系数热力图')
plt.show()

# 输出强相关变量(|r|>0.5)
strong_corr = corr_matrix[abs(corr_matrix) > 0.5].unstack()
strong_corr = strong_corr[(strong_corr != 1) & (strong_corr.notna())]
print("强相关变量对:")
print(strong_corr)

 

 

四、热力图(Heatmap)

特点
  • 用颜色矩阵展示二维数据的数值大小或密度,颜色深浅代表数值高低。
  • 适合展示矩阵数据(如时间序列、用户行为、基因表达),可快速定位热点区域。
应用场景
  • 时间序列数据(如股票价格月度波动)、用户行为分析(页面点击热力图)、气象数据(温度分布)。
Python 实现(Seaborn)
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 创建模拟数据(月度销售数据:12个月x5类产品)
np.random.seed(42)
months = [f'月{i}' for i in range(1, 13)]
products = [f'产品{i}' for i in range(1, 6)]
sales_data = np.random.randint(100, 1000, size=(12, 5))

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

# 绘制热力图
plt.figure(figsize=(12, 8))
sns.heatmap(
    sales_df,
    annot=True,            # 显示数值
    cmap='YlGnBu',         # 颜色映射(黄色到蓝色)
    fmt='d',               # 整数格式
    linewidths=1,          # 网格线宽度
    cbar_kws={'label': '销售额'}
)
plt.title('月度产品销售额热力图')
plt.xlabel('产品类别')
plt.ylabel('月份')
plt.show()

# 分析最高/最低销售额
max_sales = sales_df.max().max()
min_sales = sales_df.min().min()
print(f"最高销售额:{max_sales},最低销售额:{min_sales}")

 

 

五、二维密度图(2D Density Plot)
5.1 特点深度解析
二维密度图用于展示二维数据的分布密度,通过颜色或等高线表示数据点的密集程度。其核心特点包括:
  • 分布形态展示:能够清晰呈现数据在二维空间中的聚集趋势、分布形状(如单峰、多峰),帮助理解数据的内在结构。
  • 大数据处理优势:在数据量较大时,比散点图更能有效展示数据分布,避免点的重叠和混乱。
  • 异常值检测:低密度区域可能存在异常值,通过密度图可直观发现。
5.2 应用场景扩展
  • 交通流量分析:分析道路不同路段、不同时段的交通流量密度,优化交通管理。
  • 城市规划:研究城市人口、商业活动等的分布密度,合理规划城市资源。
  • 机器学习数据探索:了解特征变量的联合分布,为模型选择和参数调整提供参考。
5.3 Python 实现与说明
 
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from scipy.stats import gaussian_kde

# 设置中文字体
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

# 创建模拟数据(双变量正态分布,带两个聚类)
np.random.seed(42)
# 聚类1
x1 = np.random.normal(-1, 1, 300)  # 均值-1,标准差1
y1 = np.random.normal(-1, 1, 300)
# 聚类2
x2 = np.random.normal(1, 1, 300)   # 均值1,标准差1
y2 = np.random.normal(1, 1, 300)

# 合并数据
x = np.concatenate([x1, x2])
y = np.concatenate([y1, y2])
data = pd.DataFrame({'X': x, 'Y': y})

# 绘制二维密度图(等高线+填充色)
plt.figure(figsize=(10, 8))
sns.kdeplot(
    data=data, x="X", y="Y",
    fill=True,               # 填充颜色
    cmap='Blues',            # 蓝色系颜色映射
    levels=10,               # 等高线条数
    thresh=0.05,             # 显示阈值(只显示密度>0.05的区域)
    alpha=0.8,               # 透明度
    linewidths=1             # 轮廓线宽度
)

# 叠加原始数据点,增强可视化效果
plt.scatter(x, y, s=10, c='black', alpha=0.3, label='原始数据点')

# 添加标题和标签
plt.title('二维密度图:双聚类正态分布')
plt.xlabel('X变量')
plt.ylabel('Y变量')
plt.colorbar(label='密度')  # 添加颜色条显示密度刻度
plt.grid(True, alpha=0.3)   # 添加网格线
plt.legend()                # 显示图例

# 计算并标注密度峰值位置
kde = gaussian_kde([x, y])
peak_indices = kde([x, y]).argsort()[-5:]  # 取密度最高的5个点
peak_x, peak_y = x[peak_indices], y[peak_indices]

# 标注峰值点
for px, py in zip(peak_x, peak_y):
    plt.annotate(f'峰值', (px, py), 
                 xytext=(10, 10), 
                 textcoords='offset points',
                 arrowprops=dict(arrowstyle='->', color='red'))

plt.tight_layout()
plt.savefig('density_plot_2d.png')
plt.show()

# 输出密度峰值坐标
print("密度峰值位置:")
print(pd.DataFrame({'X坐标': peak_x, 'Y坐标': peak_y}))

# 额外展示:使用hexbin图(六边形分箱)展示二维密度
plt.figure(figsize=(10, 8))
plt.hexbin(x, y, gridsize=30, cmap='viridis', mincnt=1, alpha=0.8)
plt.colorbar(label='密度')
plt.title('二维六边形密度图')
plt.xlabel('X变量')
plt.ylabel('Y变量')
plt.tight_layout()
plt.savefig('hexbin_density.png')
plt.show()

 

结果分析与可视化效果

1. 主图(填充等高线密度图)

  • 颜色映射:蓝色越深表示密度越高,直观展示两个聚类中心((0,0) 和 (3,3))。
  • 数据叠加:灰色散点显示原始数据分布,与密度图相互印证。
  • 峰值标注:红色箭头指向密度最高的区域,辅助识别数据核心。

2. 扩展图(三种变体)

  • Hexbin 图:将平面划分为六边形单元格,通过颜色深浅表示单元格内的点数。
  • 等高线图:使用轮廓线表示密度变化,适合展示数据分布的形状。
  • 联合分布图:同时展示二维密度和两个变量的边缘分布(一维密度)。

五、参数调优建议

  1. 核带宽(bandwidth):控制 KDE 的平滑程度,过大导致细节丢失,过小会产生过拟合。
  2. 等高线数量(levels):增加levels可显示更多细节,但可能导致视觉混乱。
  3. 颜色映射(cmap):选择对比度高的配色方案(如viridisplasma),避免使用彩虹色(不利于数据解读)。
  4. 透明度(alpha):叠加散点或多层密度图时,调整透明度增强可读性。
 
 
总结
   典型工具最佳场景
散点图 2 维 展示点分布与线性关系 Matplotlib/Seaborn 简单相关性分析、异常值检测
气泡图 3 维 用气泡大小表示第三变量 Matplotlib 三维数据可视化、多指标对比
相关图 n 维 展示变量间相关系数矩阵 Seaborn/Plotly 特征筛选、多变量关联分析
热力图 2 维 用颜色表示数值密度 Seaborn 矩阵数据可视化、热点区域定位
二维密度图 2 维 展示数据分布密度 Seaborn 大数据量分布分析、聚类形态识别

 

以下围绕散点图、气泡图等五种相关可视化实验,从图表功能、数据关联及分析价值维度总结:

散点图实验

通过构建 X、Y 变量模拟数据,以散点形式直观呈现二者分布。皮尔逊相关系数 0.9655,验证强正线性关联,体现散点图对两连续变量线性关系、异常值(如边缘离散点)及分布模式的洞察能力,为回归分析等前置探索提供直观依据 。

气泡图实验

引入 “国家”“人均 GDP”“预期寿命”“人口” 多维度数据,借气泡大小(人口)、位置(GDP 与寿命)及颜色映射拓展信息。虽当前可视化因参数设置(如气泡大小、颜色区分度)存在优化空间,但验证了其承载三维及以上数据、对比多指标差异的功能,适用于经济、地理等多领域多维数据展示 。

相关图(热力图形式)实验

基于多变量模拟数据,计算并以热力图呈现相关系数矩阵。颜色、数值双编码,快速识别强相关(如变量 1 与 2 正相关、与 3 负相关 ),助力特征筛选(规避多重共线性 ),是探索性分析中梳理变量全局关联的高效工具,覆盖金融、科研等多场景 。

热力图实验

以月度产品销售矩阵数据,用颜色深浅映射销售额。清晰呈现不同产品、月份的销售 “热点”(如特定产品在年末的高值 ),验证其对矩阵数据(时间 - 类别组合等 )分布模式、极值识别的优势,适配评分、基因表达等多类型矩阵数据可视化 。

二维密度图实验

构建双聚类正态分布模拟数据,结合等高线、填充色及散点叠加,展示数据二维分布密度。有效呈现聚类趋势、分布形态(如双簇结构 ),解决大数据散点重叠问题,在交通流量、城市规划等领域,用于分析数据聚集、异常值(低密度区点 )场景价值显著 。
posted @ 2025-06-16 23:50  小菲困困  阅读(85)  评论(0)    收藏  举报