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

Posted

技术标签:

【中文标题】在图例中使用不同的颜色和形状 [Seaborn,Python]【英文标题】:Using different colors AND shapes in legend [Seaborn, Python] 【发布时间】:2017-08-22 04:22:13 【问题描述】:

我已通读examples,了解如何使用不同的形状和/或颜色来分离 Seaborn 图中的数据。然而,颜色和形状似乎是联系在一起的,以显示一个单独的变量。例如,在以下脚本中(从上面的链接中借用),您似乎只能使用绿色向下箭头和灰色向上箭头:

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())

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

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

【问题讨论】:

您有两个不同级别的色调变量,但您正在描述四个字形。映射是如何工作的? 代码 sn-p 取自上面链接的示例页面,而不是我当前的脚本。我想知道它是否可以扩展为包括 4 个标记(灰色/绿色上/下三角形) 【参考方案1】:

我假设您正在利用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()

【讨论】:

丹,很好的答案——正是我想要的!谢谢你——如果你碰巧再次经过博尔德,给我打开一个冷的! 很高兴帮助一位老朋友:)。我现在住在博尔德!刚在这里买了房子。让我知道您是否会通过 - 我们有大量“冷的”库存。

以上是关于在图例中使用不同的颜色和形状 [Seaborn,Python]的主要内容,如果未能解决你的问题,请参考以下文章

如何在seaborn regplot中使用x_bins修复图例颜色?

显示与行颜色对应的seaborn clustermap的图例

如何在seaborn的stripplot图例中更改标记

使用 ggplot2 创建带有形状的图例

ggplot 有两个图例,颜色图例中显示错误的形状

将 seaborn 情节图例移动到不同的位置