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

如何在Matplotlib中自定义散点图颜色条的颜色中点?

自定义Matplotlib颜色条中点的实现方法

要实现将颜色条中点设为5(白色对应数值5)且保持范围0-20,你可以使用matplotlib.colors.TwoSlopeNorm类创建自定义归一化规则,替代默认的线性归一化逻辑。

修改后的完整代码

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.colors import TwoSlopeNorm

col1, col2, col3 = [], [], []
for i in range(0,21):
    col1.append(i)
    col2.append(i**1.5)
    col3.append(i)
    
data = pd.DataFrame({'col1': col1, 'col2': col2, 'col3': col3})

fig = plt.figure()
ax = plt.axes()
# 创建自定义归一化对象,指定数值范围与中点
norm = TwoSlopeNorm(vmin=0, vcenter=5, vmax=20)
# 将归一化对象传入scatter,覆盖默认配色逻辑
im = ax.scatter(data['col1'], data['col2'], c=data['col3'], cmap='RdBu', norm=norm)
cbar = fig.colorbar(im, ax=ax)
plt.show()

关键说明

  • TwoSlopeNorm(旧版名为SymNorm)专为非对称颜色映射场景设计,支持独立设置最小值、中点和最大值。
  • 此处vmin=0和vmax=20保留原数值范围,vcenter=5指定颜色映射的中点为5,对应RdBu配色中的白色。
  • 将norm对象传递给scatter的norm参数,即可替换默认的线性归一化,实现自定义中点的配色效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:55:23