matplotlib 如何自动给予不同的颜色给线在FacetGrid.map

u2nhd7ah  于 2023-11-22  发布在  其他
关注(0)|答案(2)|浏览(97)

假设我们想在同一个FacetGrid上使用FacetGrid.map(sns.lineplot)两次,请问如何在第二个FacetGrid.map(sns.lineplot)中自动获得不同的颜色?
下面是一个简单的例子来说明这种情况:

import seaborn as sns
tips = sns.load_dataset("tips")
g = sns.FacetGrid(data=tips, height=6)
g.map(sns.lineplot, 'size', 'tip', ci=None)
g.map(sns.lineplot, 'size', 'total_bill', ci=None)

字符串


的数据
我想要的是两条线自动变成不同的颜色。
附言:我知道我可以使用sns.lineplot两次而不是使用g.map,但是sns.lineplot不允许我灵活地指定colrow参数,所以我想使用g.map

um6iljoc

um6iljoc1#

你会想融化这个框架,这样total_bill/tip就是同一个变量的观测值:

sns.relplot(
    data=tips.melt("size", ["total_bill", "tip"]),
    x="size", y="value", hue="variable",
    kind="line", ci=None,
)

字符串
x1c 0d1x的数据

lokaqttq

lokaqttq2#

你可以将矩形转换为“长形”,然后使用色调:

import seaborn as sns

tips = sns.load_dataset("tips")
g = sns.FacetGrid(data=tips.melt(id_vars='size', value_vars=['tip', 'total_bill']), hue='variable', height=6)
g.map(sns.lineplot, 'size', 'value', ci=None)
# g.add_legend()  # to add a figure-level legend

字符串


的数据

相关问题