如何在Seaborn中使用FacetGrid分别绘制变量

时间:2018-06-19 10:33:48

标签: python pandas matplotlib seaborn

我想分别绘制不同的变量(作为小倍数)以查看它们中是否有任何重要趋势。假设我正在跟踪各种蜥蜴的健康状况,我想要一个单独的重量和长度图表来查看是否有任何突然的变化。这是我的数据:

this.http.post<Array<Response>>(
    this.apiurl,
    {'user': this.user}
    // no need to specify responseType, json is default
)
.subscribe(data => {
    // now data is of Response Type
    this.Items = data.filter(item => item.detail);
});

我想要的是两张图,一张是重量,一张是长度,每张图有四条线(右手蓝蜥蜴,右手红蜥蜴等)。

我认为这算作微小数据,Gmail API Managing delegation settings说是必需的,因为每一行都是“观察”,因为重量和长度是同时测量的。

FacetGrid似乎设置为根据变量的创建不同的图形。从文档中的这个例子可以清楚地看出这一点:

month   hand    color   weight  length
1       left    blue    123.16  13.9
1       left    red     125.62  12.84
1       right   blue    186.46  7.18
1       right   red     152.3   7.51
2       left    blue    4465    187.77
2       left    red     116.27  10.6
2       right   blue    189.13  14.67
2       right   red     82.78   14.18
3       left    blue    124.85  13.25
3       left    red     178.51  8.33
3       right   blue    98.88   10.68
3       right   red     142.87  5.91

FacetGrid docs

我是否可以通过某种方式为每个图形指定变量/列的列表?或者我是否必须使用其他方法?

1 个答案:

答案 0 :(得分:1)

您可以添加新列,聚合手和颜色列

df["handcolor"] = df["hand"] + df["color"]

然后,您似乎想要绘制折线图。

E.g。

fig, (ax1,ax2) = plt.subplots(ncols=2)
ax1.set_title("weight")
ax2.set_title("length")
for n,grp in df.groupby("handcolor"):
    ax1.plot(grp.month, grp.weight)
    ax2.plot(grp.month, grp.length)

enter image description here