我与分类数据图混淆了,这可能是因为我真的不理解这个概念。
我有一个数据框:
A B C
0 1.438161 -0.210454 -1.983704
1 -0.283780 -0.371773 0.017580
2 0.552564 -0.610548 0.257276
3 1.931332 0.649179 -1.349062
4 1.656010 -1.373263 1.333079
5 0.944862 -0.657849 1.526811
我可以使用seaborn轻松地绘制每个列的箱线图:
sns.boxplot(df)
然而,swillots,stripplots不起作用,我想是因为需要分类数据?
value indx
1.438161 A
-0.283780 A
...
0.552564 B
1.931332 B
...
1.656010 C
0.944862 C
有没有一种非常简单快捷的方法可以做到这一点,我不知道?
https://stanford.edu/~mwaskom/software/seaborn/generated/seaborn.swarmplot.html
答案 0 :(得分:2)
我认为你需要参数data
:
sns.boxplot(data=df)
Docs:
data:DataFrame,数组或数组列表,可选
用于绘图的数据集。如果x和y不存在,则将其解释为宽格式。否则预计它将是长形的。
答案 1 :(得分:1)
IIUC,您可以使用melt
将其中一个变量转换为分类格式,以帮助绘制swarmplots
和stripplots
。
In [3]: df_sns = pd.melt(df, value_vars=['A', 'B', 'C'])
In [4]: df_sns
Out[4]:
variable value
0 A 1.438161
1 A -0.283780
2 A 0.552564
3 A 1.931332
4 A 1.656010
5 A 0.944862
6 B -0.210454
7 B -0.371773
8 B -0.610548
9 B 0.649179
10 B -1.373263
11 B -0.657849
12 C -1.983704
13 C 0.017580
14 C 0.257276
15 C -1.349062
16 C 1.333079
17 C 1.526811
In [5]: sns.swarmplot(x='variable', y='value', data=df_sns)
Out[5]: <matplotlib.axes._subplots.AxesSubplot at 0x268db2a6e10>