pandas - seabornfacetgrid点图问题

标签 pandas plot facet seaborn

我正在尝试使用点图创建一个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()

enter image description here

您可以看到,除了右下角的“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()

enter image description here

与上面相同的问题(使用“无”),并且图例未用颜色正确渲染。

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

最佳答案

这里有两个问题:标题中的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()

enter image description here

另一个答案还建议使用factorplot,它基本上将FacetGridpointplot结合在一个界面中:

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

enter image description here

结果略有不同,但更好地反射(reflect)了数据中的缺失值。

关于pandas - seabornfacetgrid点图问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33377817/

相关文章:

r - 如何抖动/闪避geom_segments以便它们保持平行?

java - 通过 Solrj 访问 Solrfacet_ranges

facet - DSpace 版本 4.x 添加 Facet,我应该编辑哪个 messages.xml 文件?

Solr 6 - 字段的 SUM 值以及 GROUP BY

r - 在 R 中绘制包含逗号的文本或标签子脚本

python - 根据某些条件将 Pandas 数据帧有效地拆分为两个数据帧

python - Pandas 使用 tldextract 加入单元格中的最后 2 个逗号分隔项

python - 创建一个计数器,迭代数据帧中的列,并在满足列中的条件时进行计数

r - 为 GoogleMap 绘图添加透明度(loa 包)

python - 将一些数值列映射到 Pandas 中的新元组列中