Python 如何使用seaborn(仅成对地块对角线)绘制单变量分布?
仅使用seaborn绘制数据帧的单变量分布时,哪一种方法更像PythonPython 如何使用seaborn(仅成对地块对角线)绘制单变量分布?,python,pandas,seaborn,Python,Pandas,Seaborn,仅使用seaborn绘制数据帧的单变量分布时,哪一种方法更像Python 导入seaborn作为sns 作为pd进口熊猫 将numpy作为np导入 将matplotlib.pyplot作为plt导入 data=pd.DataFrame( np.random.normal(0,1,size=(15,3)), 列=[“A”、“B”、“C”] ) sns.pairplot(数据)#显示对角线上的单变量分布,但添加其他图 plt.show() 结果: 我希望避免绘制不在对角线中的其他绘图。我可以使用
导入seaborn作为sns
作为pd进口熊猫
将numpy作为np导入
将matplotlib.pyplot作为plt导入
data=pd.DataFrame(
np.random.normal(0,1,size=(15,3)),
列=[“A”、“B”、“C”]
)
sns.pairplot(数据)#显示对角线上的单变量分布,但添加其他图
plt.show()
结果:
我希望避免绘制不在对角线中的其他绘图。我可以使用matplotlib和子绘图来实现这一点,但我确实认为有一种更为pythonic和美丽的方法,基于seaborn,来实现这一点。我阅读了文档并找到了sns.FacetGrid
,这可能会有所帮助(?),但我不知道如何使用它。我不明白它的参数col
有人能帮我吗?非常感谢 您需要首先长时间透视数据,以便可以将列拆分为多个方面:
data.melt()
variable value
0 A -0.510632
1 A 0.634505
2 A 1.158468
3 A 1.095242
4 A -0.105571
5 A 1.385932
6 A 1.305856
7 A -1.100260
8 A -0.829865
9 A 1.094065
10 A -0.380359
11 A -1.394960
12 A 0.263192
13 A -0.889774
14 A 0.427633
15 B -0.983942
16 B -0.109396
17 B -0.392132
18 B 0.869097
19 B 0.921728
20 B 0.837788
21 B -0.279346
[...]
将其传递到FaceGrid
并调用histplot
:
g = sns.FacetGrid(data.melt(), col="variable")
g.map(sns.histplot, "value")
使用最新版本的seaborn,您可以调用@mwaskom的评论:
sns.displot(data.melt(),col="variable",x="value",aspect=0.6)
漂亮。非常感谢。与
sns.FacetGrid
+sns.histplot
相比,更喜欢sns.displat
。