如何使用seaborn、python中的彩色气泡图设置数值变量的色调范围?

the*_*ain 5 python plot bubble-chart seaborn

我正在尝试使用seaborn创建3D点(x,y,z)的彩色气泡图,每个坐标都是[0,255]范围内的整数。我希望轴代表 x 和 y,散点气泡的色调和大小代表 z 坐标。

代码:

import seaborn
seaborn.set()
import pandas
import matplotlib.pyplot

x               = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200]
y               = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200]
z               = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200]

df = pandas.DataFrame(list(zip(x, y, z)), columns =['x', 'y', 'z']) 

ax = seaborn.scatterplot(x="x", y="y",
                 hue="z",
                 data=df)

matplotlib.pyplot.xlim(0,255)
matplotlib.pyplot.ylim(0,255)
matplotlib.pyplot.show()
Run Code Online (Sandbox Code Playgroud)

几乎让我得到了我想要的:

在此输入图像描述

然而,这使得色调范围基于 z 中的数据。相反,我想根据最小和最大 z 值的范围(如 0,255)设置范围,然后让实际点的颜色相应地映射到该范围(因此,如果一个点的 z 值是 50,那么应映射到由 [0,255] 范围内的值 50 表示的颜色。

我总结的问题:

  • 如何使用seaborn手动设置散点图中数值变量的色调颜色范围?

我在网上仔细查看了许多教程和论坛,但没有找到答案。我不确定我是否使用了正确的术语。我希望我的信息能够传达出去。

the*_*ain 7

遵循@JohanC 使用hue_norm 的建议是解决方案。我首先尝试通过删除 [hue=] 参数并仅使用 [hue_norm=] 参数来实现此目的,该参数根本不产生任何颜色(这是有道理的)。

当然,应该同时使用 [hue=] 和 [hue_norm=] 参数。

import seaborn
seaborn.set()
import pandas
import matplotlib.pyplot

x               = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200]
y               = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200]
z               = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 255]

df = pandas.DataFrame(list(zip(x, y, z, my_sizes)), columns =['x', 'y', 'z']) 

ax = seaborn.scatterplot(x="x", y="y",
                 hue="z", 
                 hue_norm=(0,255),        # <------- the solution
                 data=df)

matplotlib.pyplot.xlim(0,255)
matplotlib.pyplot.ylim(0,255)
matplotlib.pyplot.show()
Run Code Online (Sandbox Code Playgroud)