python散点图矩阵年龄家庭收入
时间: 2025-05-18 19:12:41 浏览: 16
### 使用Seaborn和Matplotlib绘制散点图矩阵
为了实现年龄、家庭和收入的散点图矩阵,可以利用 `seaborn` 库中的 `pairplot()` 或者更为灵活的 `PairGrid()` 方法。以下是详细的说明以及代码示例。
#### 数据准备
假设有一个数据集包含三列:`age`(年龄)、`family_size`(家庭规模)和 `income`(收入)。可以通过 Pandas 创建一个简单的 DataFrame 来模拟这些数据:
```python
import pandas as pd
import numpy as np
np.random.seed(42) # 设置随机种子以便结果可重复
data = {
'age': np.random.randint(18, 70, size=100),
'family_size': np.random.randint(1, 6, size=100),
'income': np.random.uniform(30000, 150000, size=100).round(2)
}
df = pd.DataFrame(data)
print(df.head())
```
这段代码创建了一个包含 100 行的数据框,每行代表一个人的相关信息[^1]。
#### 绘制散点图矩阵
##### 使用 `sns.pairplot()`
`pairplot()` 是一种简单的方法来快速生成散点图矩阵。它会自动为每一组变量之间的关系绘制散点图,并在对角线上显示分布直方图或核密度估计 (KDE)[^2]。
```python
import seaborn as sns
import matplotlib.pyplot as plt
sns.pairplot(
df,
vars=['age', 'family_size', 'income'], # 指定要绘图的变量
kind='scatter', # 类型为散点图
diag_kind='kde' # 对角线上的图为 KDE 图
)
plt.suptitle('Scatter Plot Matrix of Age, Family Size and Income', fontsize=16, y=1.03)
plt.show()
```
上述代码将生成一个散点图矩阵,其中包含了所有指定变量两两组合的关系图[^2]。
##### 使用 `sns.PairGrid()`
如果需要更多自定义选项,则可以选择使用 `PairGrid()`。这种方法提供了更大的灵活性,允许分别设置上三角形区域、下三角形区域和对角线部分的内容[^1]。
```python
grid = sns.PairGrid(df[['age', 'family_size', 'income']])
grid.map_upper(sns.scatterplot) # 上半部分绘制散点图
grid.map_lower(sns.kdeplot, fill=True) # 下半部分绘制带填充的 KDE 曲线
grid.map_diag(sns.histplot, kde=True) # 对角线位置绘制直方图加 KDE 曲线
plt.suptitle('Customized Scatter Plot Matrix with PairGrid', fontsize=16, y=1.03)
plt.show()
```
通过这种方式,可以根据需求调整不同部分的表现形式[^1]。
---
### 结论
无论是使用 `pairplot()` 还是 `PairGrid()`,都可以有效地展示多维数据间的关系。对于初学者来说,推荐先尝试 `pairplot()` 的简便方法;而对于有更高定制化需求的情况,则应考虑采用 `PairGrid()` 实现更复杂的图形布局[^3]。
---
相关问题
阅读全文