python - 如何在seaborn对象api中定义带有rgb值的颜色?

标签 python seaborn seaborn-0.12.x

我想用一些 rgb 值给散点图中的点着色。

使用原始 API,这很简单:

import seaborn as sns
x = [0, 1, 2]
y = [0, 0, 0]
colors = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
sns.scatterplot(x=x, y=y, c=colors)

我得到一个红点、一个绿点和一个蓝点。

但是如何使用对象 api 来做到这一点呢?

import seaborn.objects as so
so.Plot(x=x, y=y).add(so.Dot()).scale(color=colors)

这不起作用。根据您放置 color 参数的位置,您会收到不同的错误消息。

编辑: 最终结果看起来像这样。一些 3d 坐标表示为 rgb 值。

enter image description here

使用十六进制颜色的解决方案效果很好

hex_colors = [mpl.colors.rgb2hex(c) for c in colors]
so.Plot(x=x, y=y, color=hex_colors).add(so.Dot()).scale(color=None)

只有 Vscode 告诉我类型不兼容:

“list[str]”类型的参数不能分配给函数“__init__”中“VariableSpec”类型的参数“color” “None”类型的参数不能分配给函数“scale”中“Scale”类型的参数“color”

最佳答案

我假设您希望颜色映射到 x 位置

so.Plot(x=x, y=y, color=x).add(so.Dot(), legend=None).scale(color=colors)

enter image description here

您还可以使用身份等级:

so.Plot(x=x, y=y, color=colors).add(so.Dot()).scale(color=None)

但是变量被记录为采用向量参数,而不是矩阵,所以我不确定我是否希望这在未来始终有效。使用十六进制值可能更可靠:

hex_colors = [mpl.colors.rgb2hex(c) for c in colors]
so.Plot(x=x, y=y, color=hex_colors).add(so.Dot()).scale(color=None)

enter image description here

关于python - 如何在seaborn对象api中定义带有rgb值的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75666897/

相关文章:

python - 解释 GridSearchCV 中的岭回归

python - 使用 Scipy 查找点在凸包上的投影

python - 未找到 Seaborn 模块 'histplot'

python - 色调条形图的 Seaborn 解决方法

python - 图例使用 Seaborn Objects API 模糊绘图

Python - 从当前浏览器操作和读取浏览器

python - 如何选择一个好的Python列表数据结构来存储每一种可能的井字棋游戏

python - Seaborn:指定确切的颜色

python - 使用 Seaborn 对象接口(interface)时如何对构面进行排序