gpt4 book ai didi

python - 用不同的色调分组覆盖对 seaborn 的 FacetGrid 的多次调用

转载 作者:行者123 更新时间:2023-12-04 17:38:06 26 4
gpt4 key购买 nike

使用 seaborn 的 FacetGrid,我想更新多个映射调用之间的“色调”分组参数。具体来说,我最初有一个自定义绘图函数,它采用“色调”分组,在该函数之上我想显示组的平均值(因此忽略色调,并汇总所有数据)。

例如

g = sns.FacetGrid(tips, col="time",  hue="smoker")
g = (g.map(plt.scatter, "total_bill", "tip", edgecolor="w").add_legend())
g = (g.map(sns.regplot, "total_bill", "tip").add_legend())

将为每个组创建一条彩色回归线。如何更新 FacetGrid 以在第二次调用 map 时忽略 hue 分组?在此示例中,我想要两个彩色散点图,其中叠加了一条(黑色)回归线。

最佳答案

FacetGrid 使用色调对输入数据进行分组。它不能仅将其部分分组。

matplotlib 解决方案可能看起来像

import matplotlib.pyplot as plt
import seaborn as sns

tips = sns.load_dataset("tips", cache=True)

n = len(tips["time"].unique())
usmoker = tips["smoker"].unique()

fig, axes = plt.subplots(ncols=n, sharex=True, sharey=True)

for ax, (time, grp1) in zip(axes.flat, tips.groupby("time")):
ax.set_title(time)
ax.set_prop_cycle(plt.rcParams["axes.prop_cycle"])

for smoker in usmoker:
grp2 = grp1[grp1["smoker"] == smoker]
sns.regplot("total_bill", "tip", data=grp2, label=str(smoker),
fit_reg=False, ax=ax)
ax.legend(title="Smoker")

for ax, (time, grp1) in zip(axes.flat, tips.groupby("time")):
sns.regplot("total_bill", "tip", data=grp1, ax=ax, scatter=False,
color="k", label="regression line")


plt.show()

enter image description here

关于python - 用不同的色调分组覆盖对 seaborn 的 FacetGrid 的多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55765046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com