You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取scatter_matrix散点矩阵图的第一列子图并单独绘制?

仅保留散点矩阵图的第一列子图

散点矩阵图

我通过以下代码绘制了该散点矩阵图:

import matplotlib.pyplot as plt 
from pandas.plotting import scatter_matrix 

# selecting three numerical features 
features = ['TARGET_deathRate','incidenceRate', 'PctPublicCoverageAlone', 
        'povertyPercent', 'PctHS25_Over', 'PctPublicCoverage'] 

# plotting the scatter matrix 
# with the features 
plt.rcParams['font.size'] = '5'
scatter_matrix(df_add[features]) 
#plt.subplot(2, 2, 2)
plt.show() 

我希望仅绘制该矩阵图中的第一列子图,移除其余5列,请问该如何实现?


解决方案

方法1:基于原scatter_matrix隐藏多余子图

scatter_matrix会返回一个二维的Axes对象数组,我们可以遍历这个数组,只保留第一列的子图,将其余列的子图设置为不可见:

import matplotlib.pyplot as plt 
from pandas.plotting import scatter_matrix 

features = ['TARGET_deathRate','incidenceRate', 'PctPublicCoverageAlone', 
        'povertyPercent', 'PctHS25_Over', 'PctPublicCoverage'] 

plt.rcParams['font.size'] = '5'
# 获取所有子图的Axes对象
axes = scatter_matrix(df_add[features])

# 遍历每一行,隐藏第一列以外的所有子图
for row in axes:
    for ax in row[1:]:
        ax.set_visible(False)

plt.tight_layout()  # 调整布局避免重叠
plt.show()

方法2:手动绘制第一列内容(更轻量化)

如果不想生成全矩阵再隐藏,也可以直接手动绘制第一列的直方图和散点图,这种方式更高效:

import matplotlib.pyplot as plt

features = ['TARGET_deathRate','incidenceRate', 'PctPublicCoverageAlone', 
        'povertyPercent', 'PctHS25_Over', 'PctPublicCoverage'] 

# 创建对应行数的画布,列数固定为1
fig, axes = plt.subplots(nrows=len(features), ncols=1, figsize=(4, 12))
plt.rcParams['font.size'] = '5'

# 第一行绘制第一个特征的直方图
df_add[features[0]].plot(kind='hist', ax=axes[0], edgecolor='black')
axes[0].set_title(features[0])

# 后续行绘制其他特征与第一个特征的散点图
for i in range(1, len(features)):
    axes[i].scatter(df_add[features[0]], df_add[features[i]], s=5)
    axes[i].set_xlabel(features[0])
    axes[i].set_ylabel(features[i])

plt.tight_layout()
plt.show()

两种方法都能实现只保留第一列子图的需求,方法1适合快速修改原有代码,方法2则更灵活,适合仅需要第一列内容的场景。


内容的提问来源于stack exchange,提问作者Swalkr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 02:45:15