在数据分析与可视化领域,理解变量间的相关性是揭示数据内在规律的关键。而相关类可视化图像则可以通过直观的图形语言,将数据关系转化为可感知的视觉模式,快速捕捉变量关联、分布特征及潜在趋势。 无论是探索性数据分析、多维度信息展示,还是复杂数据分布建模,这些工具均能在不同场景中发挥独特作用,成为数据洞察的重要助力。
本文所有的数据均来自kaggle的Global Air Quality (2024) - 6 Cities数据集
1. 散点图
介绍:通过平面上的点分布展示两个变量的关系,每个点代表一个数据样本,点的位置由两个变量的取值决定。
特点:
- 直观展示两个变量的关系,通过点分布呈现线性/非线性趋势、聚类或异常值;
- 支持通过颜色、形状等编码引入额外分类变量,增强多维度信息展示;
- 交互性强(如缩放、筛选),适合探索性数据分析,对异常值敏感度高。
应用场景:
- 科研领域分析变量关联性(如降雨量与作物产量);
- 商业场景验证假设(如用户活跃度与留存率);
- 教育研究中分析学习投入与成绩分布。
Python实现:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_csv('Global Air Quality (2024) - 6 Cities/Brasilia_Air_Quality.csv').head(100)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.figure(figsize=(12, 8))
plt.scatter(df['PM2.5'], df['AQI'], alpha=0.5)
plt.title('巴西利亚2024年1月1-5号的PM2.5与AQI的散点图', fontsize=14)
plt.xlabel('PM2.5 浓度 (μg/m³)', fontsize=12)
plt.ylabel('空气质量指数 (AQI)', fontsize=12)
plt.grid(True, linestyle='--', alpha=0.7)
z = np.polyfit(df['PM2.5'], df['AQI'], 1)
p = np.poly1d(z)
plt.plot(df['PM2.5'], p(df['PM2.5']), "r-", alpha=0.8)
plt.tight_layout()
plt.show()

2. 气泡图
介绍:在散点图基础上扩展的三维数据可视化图表,通过气泡位置表示两个变量,气泡大小表示第三个变量,形成多维度数据的整合展示。
特点:
- 在散点图基础上通过气泡大小引入第三个变量,实现三维数据整合;
- 视觉上突出“大小差异”,适合分组数据对比(如不同类别下多指标差异);
- 可结合颜色进一步区分第四维度(如不同区域数据),但需注意气泡尺寸的视觉准确性。
应用场景:
- 市场分析中展示产品价格、销量、利润的三维关系;
- 地理数据可视化(如城市规模、人口、经济指标的综合对比);
- 生态研究中分析物种栖息地、种群数量、威胁等级的关联。
Python实现:
import pandas as pd
import plotly.express as px
df = pd.read_csv('Global Air Quality (2024) - 6 Cities/Sydney_Air_Quality.csv').head(100)
fig = px.scatter(df,
x='NO2',
y='SO2',
size='PM2.5',
color='AQI',
hover_data=['Date'],
title='悉尼2024年空气质量气泡图',
labels={'NO2': '二氧化氮 (NO2)',
'SO2': '二氧化硫 (SO2)',
'PM2.5': 'PM2.5',
'AQI': '空气质量指数'},
color_continuous_scale='viridis')
fig.update_layout(
plot_bgcolor='white',
width=1000,
height=600,
title_x=0.5,
title_font_size=20,
)
fig.update_xaxes(showgrid=True, gridwidth=1, gridcolor='LightGray')
fig.update_yaxes(showgrid=True, gridwidth=1, gridcolor='LightGray')
fig.show()

3. 热力图
介绍:通过颜色梯度表示二维矩阵中数值大小的可视化方法,颜色越深代表数值越高,用于全局展示数据的密度或分布模式。
特点:
- 用颜色梯度表示二维矩阵中的数值分布,全局视角突出“热点”区域(高密度或高数值区);
- 常与层次聚类结合,对行列分组,揭示数据内在结构(如相似样本或变量聚为一类);
- 适用于大规模数据(如时间×用户行为矩阵),颜色方案需适配数据特性(单极、双极或分类)。
应用场景:
- 生物信息学中展示基因表达谱的聚类模式;
- 网页设计优化中分析用户点击热力分布;
- 气候研究中可视化温度/降水的时空分布。
Python实现:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
def setup_plot_style():
"""Configure plot style settings for Chinese characters"""
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
def create_correlation_heatmap(df, title):
"""Create and display a correlation heatmap"""
correlation_matrix = df.select_dtypes(include=['float64', 'int64']).corr()
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix,
annot=True,
cmap='coolwarm',
vmin=-1, vmax=1,
center=0,
fmt='.2f',
square=True)
plt.title(title, pad=20)
plt.tight_layout()
plt.show()
def main():
df = pd.read_csv('Global Air Quality (2024) - 6 Cities/New_York_Air_Quality.csv')
setup_plot_style()
create_correlation_heatmap(df, '纽约空气质量指标热力图')
if __name__ == '__main__':
main()

4. 二维密度图
介绍:通过核密度估计(KDE)展示两个连续变量联合分布密度的图表,用颜色或等高线表示数据点的聚集程度,解决散点图数据重叠问题。
特点:
- 通过核密度估计(KDE)解决散点重叠问题,用颜色或等高线展示变量联合分布的密度峰值与模式;
- 可叠加散点保留个体细节,平衡全局趋势与局部数据点;
- 对多峰分布(如性别差异导致的双峰值)和低密度区域敏感,需合理调参(如带宽)。
应用场景:
- 金融领域分析资产收益率与波动率的极端值分布;
- 城市规划中研究人口密度与公共设施覆盖的关联模式;
- 生物学中鉴定单细胞亚群的标志物表达分布。
Python实现:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
df = pd.read_csv('Global Air Quality (2024) - 6 Cities/London_Air_Quality.csv')
df = df.replace([np.inf, -np.inf], np.nan)
df = df.dropna(subset=['NO2', 'PM2.5'])
df['NO2'] = df['NO2'].clip(0, df['NO2'].quantile(0.99))
df['PM2.5'] = df['PM2.5'].clip(0, df['PM2.5'].quantile(0.99))
plt.close('all')
fig = plt.figure(figsize=(10, 8))
ax_main = plt.gca()
h = ax_main.hist2d(df['NO2'], df['PM2.5'], bins=50, cmap='viridis')
plt.colorbar(h[3], ax=ax_main, label='密度')
ax_main.set_xlabel('NO2 浓度')
ax_main.set_ylabel('PM2.5 浓度')
plt.suptitle('伦敦空气质量NO2与PM2.5二维密度图', y=0.95)
plt.show()

各图表优劣势对比表
| 图表类型 | 核心优势 | 不足之处 | 特点 | 应用场景 |
|---|---|---|---|---|
| 散点图 | 双变量关系直观,异常值易识别,支持交互探索 | 大数据点重叠严重,多变量需多图拼接 | 基础二维可视化,异常值敏感度高 | 探索性数据分析(如广告投入与销量关联) |
| 气泡图 | 三维数据整合,类别对比清晰,视觉突出“大小差异” | 气泡尺寸易误导比例判断,数据量大时遮挡严重 | 多维度紧凑展示,适合少数据点多指标 | 市场三维分析(价格-销量-利润综合评估) |
| 热力图 | 全局热点一目了然,适合大规模矩阵数据,支持行列聚类 | 颜色选择影响可读性,丢失个体数据细节 | 密度与聚类模式可视化 | 基因表达谱、用户点击热力分布、相关系数矩阵 |
| 二维密度图 | 解决数据重叠,清晰展示分布峰值与模式,可叠加散点补充细节 | 依赖密度估计参数调参,小样本偏差大 | 分布模式深度分析,多峰识别能力强 | 金融风险极端值分析、单细胞亚群鉴定 |
8477

被折叠的 条评论
为什么被折叠?



