seaborn facetgrid 点图问题

seaborn facetgrid pointplot issues

我正在尝试使用点图创建一个 seaborn facetgrid。

我的数据是:

DaysIn  GroupUID    OTU_id  value
1   3.A 1   33
1   3.B 1   73.17647059
1   4.A 1   48.12903226
1   4.B 1   39.875
2   3.A 1   23.76470588
2   3.B 1   43.71428571
2   4.A 1   51.73333333
2   4.B 1   42.06896552
3   3.A 1   2
3   3.B 1   10.71428571
3   4.A 1   12.93333333
3   4.B 1   15
4   4.A 1   11.53333333
4   4.B 1   27.86206897
5   3.A 1   1.882352941
5   3.B 1   1.857142857
5   4.A 1   41.9
5   4.B 1   46.28571429
6   4.A 1   58.7
6   4.B 1   101.0344828
7   3.A 1   1.466666667
7   3.B 1   3.428571429
7   4.A 1   74.9
7   4.B 1   102.4137931
8   3.A 1   10.875
8   3.B 1   5.538461538
8   4.A 1   35.5
8   4.B 1   72.33333333
9   3.A 1   21.6
9   3.B 1   16.42857143
10  3.A 1   25.46666667
10  3.B 1   18.85714286
14  3.A 1   29
14  3.B 1   65.8
21  3.A 1   117.1428571
21  3.B 1   104.2142857
28  3.A 1   91.06666667
28  3.B 1   52.78571429
1   3.A 2   27.0625
1   3.B 2   14.23529412
1   4.A 2   32.74193548
1   4.B 2   18.625
2   3.A 2   15
2   3.B 2   23.64285714
2   4.A 2   13.1
2   4.B 2   19.75862069
3   3.A 2   7.6875
3   3.B 2   2.928571429
3   4.A 2   24.46666667
3   4.B 2   29.86206897
4   4.A 2   43.2
4   4.B 2   22.4137931
5   3.A 2   3.117647059
5   3.B 2   4.428571429
5   4.A 2   24.13333333
5   4.B 2   43.35714286
6   4.A 2   31.13333333
6   4.B 2   81.72413793
7   3.A 2   1.333333333
7   3.B 2   4.857142857
7   4.A 2   368.4666667
7   4.B 2   62.34482759
8   3.A 2   0.9375
8   3.B 2   4.384615385
8   4.A 2   0
8   4.B 2   0.333333333
9   3.A 2   0.733333333
9   3.B 2   2.357142857
10  3.A 2   3.4
10  3.B 2   1.357142857
14  3.A 2   4.3
14  3.B 2   0.4
21  3.A 2   2.357142857
21  3.B 2   6.285714286
28  3.A 2   15.93333333
28  3.B 2   9.571428571

下面的代码会生成下图:

    g = sns.FacetGrid(long_df, col='GroupUID', row='OTU_id', sharey=False, sharex=False, margin_titles=True)
    g = g.map(sns.pointplot,'DaysIn','value')
    g.add_legend()

除了右下角的 "None" 标题外,您可以看到该图几乎是完美的。

下面的代码会生成下图:

    g = sns.FacetGrid(long_df, col='GroupUID', hue='OTU_id', sharey=False, sharex=False, margin_titles=True)
    g = g.map(sns.pointplot,'DaysIn','value')
    g.add_legend()

与上述相同的问题("None")并且图例未正确呈现颜色。

我错过了什么吗?我做错了什么?

这里有两个问题:标题中的None无法重现;我怀疑您使用的是旧版本的 seaborn?

描述图例问题 here:本质上 pointplot 有自己的 hue 参数,因此您可以更改指定色调的位置:

g = sns.FacetGrid(long_df, col='GroupUID', sharey=False, sharex=False, margin_titles=True)
g = g.map(sns.pointplot,'DaysIn','value', 'OTU_id', palette='deep')
g.add_legend()

另一个答案也推荐使用factorplot,它基本上将FacetGridpointplot结合在一个界面中:

g = sns.factorplot(x="DaysIn", y='value', hue="OTU_id",
                   col='GroupUID', data=long_df, sharex=False, sharey=False)

结果略有不同,但能更好地反映数据中的缺失值。