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

如何为Seaborn 2D distplot添加连续颜色刻度图例?

给Seaborn 2D分布图表添加连续颜色刻度图例

首先说明:Seaborn旧版的distplot已被弃用,现在推荐用kdeplot(2D密度图)或histplot(2D直方图)来实现类似需求。以下是两种常见场景的具体实现方法,均能生成连续渐变的颜色刻度图例对应频率/密度范围:

场景1:2D KDE密度图(带填充)

通过seaborn.kdeplot绘制2D密度分布,利用matplotlib的colorbar生成对应密度值的连续色条:

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

# 生成模拟数据
np.random.seed(42)
x = np.random.normal(size=1000)
y = np.random.normal(size=1000)

# 创建画布与轴对象
fig, ax = plt.subplots(figsize=(8,6))

# 绘制2D KDE图,获取绘图对象
kde_plot = sns.kdeplot(
    x=x, y=y,
    cmap="viridis",  # 指定渐变配色
    fill=True,       # 开启颜色填充
    thresh=0,        # 显示全部密度区域
    ax=ax
)

# 提取绘图的颜色映射信息,生成连续色条
fig.colorbar(kde_plot.collections[0], ax=ax, label="密度(频率)")

# 设置图表标签与标题
ax.set_xlabel("X变量")
ax.set_ylabel("Y变量")
ax.set_title("2D KDE分布与密度色条")

plt.show()

场景2:2D直方图(分箱计数)

针对分箱统计的2D直方图,同样提取绘图集合对象生成对应频数的连续色条:

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

# 生成模拟数据
np.random.seed(42)
x = np.random.normal(size=1000)
y = np.random.normal(size=1000)

# 创建画布与轴对象
fig, ax = plt.subplots(figsize=(8,6))

# 绘制2D直方图,获取绘图对象
hist_plot = sns.histplot(
    x=x, y=y,
    cmap="plasma",
    bins=30,
    ax=ax
)

# 提取直方图的颜色映射信息,生成连续色条
fig.colorbar(hist_plot.collections[0], ax=ax, label="频数(频率)")

# 设置图表标签与标题
ax.set_xlabel("X变量")
ax.set_ylabel("Y变量")
ax.set_title("2D直方图与频数色条")

plt.show()

关键要点

  • 核心逻辑:Seaborn的2D绘图函数返回的对象中,collections[0]包含了颜色映射的ScalarMappable实例,matplotlib的colorbar可基于此生成连续渐变的刻度图例。
  • 可通过cmap参数替换不同渐变配色(如coolwarm、Blues等),适配不同视觉需求。
  • 若需调整色条位置、大小,可通过colorbar的shrink(缩放比例)、pad(与图表间距)等参数微调。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 11:48:17