[英]How to plot univariate distribution using seaborn (pairplot diagonal only)?
仅使用 seaborn 的 dataframe 的单变量分布 plot 的单变量分布是哪种更 Pythonic 的方式?
import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.DataFrame(
np.random.normal(0,1,size=(15,3)),
columns = ["A","B","C"]
)
sns.pairplot(data) # shows univariate distribution in the diagonal but add other plots
plt.show()
结果:
我想避免绘制不在对角线上的其他图。 我可以使用 matplotlib 和子图来做到这一点,但我确实认为有一种基于 seaborn 的更 Pythonic 和更漂亮的方式来实现这一点。 我阅读了文档并找到了可能有帮助的sns.FacetGrid
(?),但我不知道如何使用它。 我不明白它的参数col
...
有人能帮我吗? 非常感谢 !
您需要先将您的数据长 pivot,以便您可以将列拆分为方面:
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
[...]
您将其传递给FacetGrid
并调用histplot
:
g = sns.FacetGrid(data.melt(), col="variable")
g.map(sns.histplot, "value")
使用最新版本的 seaborn,您可以调用displot ,正如@mwaskom 评论的那样:
sns.displot(data.melt(),col="variable",x="value",aspect=0.6)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.