首页 > 解决方案 > 如何在 for 循环中获取 seaborn 的 distplot 的线拟合数据?

问题描述

我尝试在 for 循环中获取 seaborn 中 distplot 的线数据。但是当我执行此代码时,即使列表 X 的所有元素都不同,它也会打印相同的值。请让我知道为什么会这样

import numpy as np
import seaborn as sns 
import matplotlib.pyplot as plt 

x1 = np.random.normal(10,3,size=100)
x2 = np.random.normal(8,2,size=100)
x3 = np.random.normal(7,2,size=100)
x4 = np.random.normal(11,5,size=100)

X = [x1, x2, x3, x4]

for i in X:
    dist_data_1 = sns.distplot(i).get_lines()[0].get_data()
    print(dist_data_1)


标签: pythonseaborn

解决方案


您在同一轴上绘制所有分布,因此您在每次迭代时添加新线。但是,您总是从第一行(索引[0])检索数据。

相反,您应该从最后一行(索引[-1])检索数据:

import numpy as np
import seaborn as sns 
import matplotlib.pyplot as plt 

x1 = np.random.normal(10,3,size=100)
x2 = np.random.normal(8,2,size=100)
x3 = np.random.normal(7,2,size=100)
x4 = np.random.normal(11,5,size=100)

X = [x1, x2, x3, x4]

for i in X:
    dist_data_1 = sns.distplot(i).get_lines()[-1].get_data()
    print(dist_data_1)

推荐阅读