用于基准测试相关系数的散点图示例及Python复现方案问询
复现皮尔逊相关系数散点图的Python实现
可以用numpy生成具有指定皮尔逊相关系数的样本数据,搭配matplotlib来复现你需要的散点图。以下是完整示例代码:
import numpy as np import matplotlib.pyplot as plt # 设置画布和子图布局 fig, axes = plt.subplots(nrows=2, ncols=4, figsize=(16, 8)) axes = axes.flatten() # 定义要展示的相关系数列表 correlations = [1.0, 0.8, 0.4, 0.0, -0.4, -0.8, -1.0] # 生成数据并绘图 np.random.seed(42) # 固定随机种子保证可复现 for ax, r in zip(axes[:7], correlations): # 生成二维正态分布数据,指定协方差来控制相关系数 mean = [0, 0] cov = [[1, r], [r, 1]] x, y = np.random.multivariate_normal(mean, cov, 500).T # 绘制散点图 ax.scatter(x, y, alpha=0.6, s=20) # 计算实际皮尔逊相关系数(验证用) actual_r = np.corrcoef(x, y)[0, 1] ax.set_title(f'r = {actual_r:.1f}') ax.set_xlim(-3, 3) ax.set_ylim(-3, 3) ax.grid(True, linestyle='--', alpha=0.7) # 隐藏最后一个空白子图 axes[7].axis('off') plt.tight_layout() plt.show()
代码说明
- 使用
numpy.random.multivariate_normal生成符合指定协方差的二维数据,协方差矩阵中的非对角元素就是我们要设置的相关系数。 - 固定随机种子
np.random.seed(42)可以让每次运行生成的散点分布一致,方便基准测试。 - 每个子图会标注实际计算出的相关系数,和设定值基本一致。
- 通过
alpha参数设置散点透明度,避免点重叠影响视觉效果。
内容的提问来源于stack exchange,提问作者Thoth
相关产品推荐
相关产品推荐

