在图例中使用不同的颜色和形状 [Seaborn, Python]

Using different colors AND shapes in legend [Seaborn, Python]

我通读了 examples 如何使用不同的形状 and/or 颜色来分隔 Seaborn 图中的数据。然而,颜色和形状似乎是捆绑在一起的,以显示一个单独的变量。例如,在下面的脚本中(从上面的 link 借来的)似乎你可以 使用绿色向下箭头和灰色向上箭头:

g = sns.FacetGrid(tips, col="sex", hue="time", palette=pal,
                  hue_order=["Dinner", "Lunch"],
                  hue_kws=dict(marker=["^", "v"]))
g = (g.map(plt.scatter, "total_bill", "tip", **kws).add_legend())

是否可以显示绿色向上箭头灰色向上箭头,以及绿色向下箭头和灰色向下箭头箭头?

我已经尝试以类似于为 hue 所做的方式为 col 定义字典,但我仍在努力解决这个问题。

我假设您正在利用 sns.FacetGrid 函数的一些功能。如果您只是想制作一个简单的散点图,那么直接使用 plt.scatter 可能更直接。

无论如何,在 FacetGrid 示例中似乎可以使用您想要的任何颜色和符号。我不是 Seaborn 专业人士,但这是实现此目的的一种方法:

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")
kws = dict(s=50, linewidth=.5, edgecolor="w")
pal = ['red', 'green', 'blue', 'red', 'green', 'blue',]
g = sns.FacetGrid(tips, col="sex", hue="size", palette=pal, hue_kws=dict(marker=["^", "^", "^", "v", "v", "v"]))
g = (g.map(plt.scatter, "total_bill", "tip", **kws).add_legend())

plt.show()