You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何手动设置Seaborn/Matplotlib散点图连续变量(hue)的图例值?

自定义Seaborn散点图连续变量图例的显示数值

当然可以手动指定连续变量(hue)对应的图例显示数值。针对你的需求,这里提供两种可行方案:

方案1:用颜色条展示自定义刻度(推荐用于连续变量)

关闭Seaborn默认图例,借助Matplotlib的ScalarMappable创建自定义颜色条,直接指定要显示的刻度值:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.cm import ScalarMappable
import seaborn as sns

np.random.seed(123)
x = np.random.randn(500)
y = np.random.randn(500)
z = np.random.exponential(1, 500)

fig, ax = plt.subplots()
hue_norm = (0, 3)
palette = 'coolwarm'

# 绘制散点图,关闭默认图例
sns.scatterplot(
    x=x,
    y=y,
    hue=z,
    hue_norm=hue_norm,
    palette=palette,
    legend=False
)

# 创建与散点图匹配的颜色映射和归一化规则
norm = plt.Normalize(*hue_norm)
cmap = plt.get_cmap(palette)

# 创建用于生成颜色条的映射对象
sm = ScalarMappable(norm=norm, cmap=cmap)
sm.set_array([])

# 添加自定义颜色条,指定要显示的刻度
cbar = plt.colorbar(sm, ax=ax, ticks=[0, 1, 2, 3])
cbar.set_label('z')

ax.grid()
ax.set(xlabel="x", ylabel="y")
sns.despine()
plt.show()

方案2:用离散标记展示自定义图例(匹配原图例样式)

如果希望保留原图例的离散标记样式,可手动创建代理标记并添加自定义图例:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.lines import Line2D

np.random.seed(123)
x = np.random.randn(500)
y = np.random.randn(500)
z = np.random.exponential(1, 500)

fig, ax = plt.subplots()
hue_norm = (0, 3)
palette = 'coolwarm'

# 绘制散点图,关闭默认图例
sns.scatterplot(
    x=x,
    y=y,
    hue=z,
    hue_norm=hue_norm,
    palette=palette,
    legend=False
)

# 创建颜色映射和归一化规则
norm = plt.Normalize(*hue_norm)
cmap = plt.get_cmap(palette)

# 定义要显示的目标刻度值
target_ticks = [0, 1, 2, 3]

# 为每个刻度创建对应的散点标记
custom_legend = []
for tick in target_ticks:
    color = cmap(norm(tick))
    marker = Line2D([0], [0], marker='o', color='w', markerfacecolor=color, markersize=10, label=str(tick))
    custom_legend.append(marker)

# 添加自定义图例
ax.legend(handles=custom_legend, title='z')

ax.grid()
ax.set(xlabel="x", ylabel="y")
sns.despine()
plt.show()

两种方案都能让图例准确显示[0,1,2,3]对应的颜色,你可以根据可视化需求选择。

内容的提问来源于stack exchange,提问作者dfried

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 22:26:31