seaborn的pairplot
函数允许在数据集中绘制成对关系。
根据文件(突出显示):
默认情况下,此函数将创建一个Axes网格,以便数据中的每个变量将在y轴上跨单个行共享,并在x轴上跨单个列共享。对角轴的处理方式不同,绘制一个图表以显示该列中变量数据的单变量分布。
还可以显示变量的子集或在行和列上绘制不同的变量。
我只能找到一个为行和列分组不同变量的例子,here(它是绘制与PairGrid和pairplot()部分的成对关系下的第6个图。如您所见,它正在针对同一个因变量( y_vars )绘制许多自变量( x_vars ),结果非常好。
我正在尝试对许多依赖变量绘制一个独立变量。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
ages = np.random.gamma(6,3, size=50)
data = pd.DataFrame({"age": ages,
"weight": 80*ages**2/(ages**2+10**2)*np.random.normal(1,0.2,size=ages.shape),
"height": 1.80*ages**5/(ages**5+12**5)*np.random.normal(1,0.2,size=ages.shape),
"happiness": (1-ages*0.01*np.random.normal(1,0.3,size=ages.shape))})
pp = sns.pairplot(data=data,
x_vars=['age'],
y_vars=['weight', 'height', 'happiness'])
问题是子图被垂直排列,我找不到改变它的方法。
我知道那时的平铺结构不会那么整洁,因为 Y 轴应该在每个子图上标记。另外,我知道我可以用这样的东西手工制作这些图:
fig, axes = plt.subplots(ncols=3)
for i, yvar in enumerate(['weight', 'height', 'happiness']):
axes[i].scatter(data['age'],data[yvar])
尽管如此,我正在学习使用seaborn,我觉得界面非常方便,所以我想知道是否有办法。此外,这个例子非常简单,但是对于更复杂的数据集,seaborn会为您提供更多可以使 raw-matplotlib 方法更加复杂的事情( hue ,开始)