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

如何调整matplotlib的colorbar颜色范围使配色整体偏向紫色

Matplotlib调整colormap增加紫色占比方案

你当前使用的BuPu_r是蓝紫渐变的反向色卡,想要提升整体紫色占比可以用以下三种方案,按需选择即可:

方案1:直接替换为纯紫色系色卡(最简单)

不需要调整参数,直接把cmap替换为matplotlib自带的纯紫色渐变系列即可,完全没有蓝色干扰:

import matplotlib.pyplot as plt
import numpy as np

# Fixing random state for reproducibility
np.random.seed(19680801)

plt.subplot(111)
# 替换为Purples_r纯紫渐变,数值越小颜色越深
plt.imshow(np.random.random((100, 100)), cmap=plt.cm.Purples_r)

plt.subplots_adjust(bottom=0.1, right=0.8, top=0.9)
cax = plt.axes([0.85, 0.1, 0.075, 0.8])
plt.colorbar(cax=cax)
plt.show()

方案2:截断原有BuPu_r色卡,保留高占比紫色段

如果需要保留少量蓝色渐变,仅提升紫色占比,可以截取BuPu_r的紫色色段,丢弃偏蓝的浅色部分:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import ListedColormap

# Fixing random state for reproducibility
np.random.seed(19680801)

# 截取BuPu_r中0到80%的色段,丢弃后20%偏浅蓝色部分,保留更多紫色
original_cmap = plt.cm.BuPu_r
truncated_cmap = ListedColormap(original_cmap(np.linspace(0, 0.8, 256)))

plt.subplot(111)
plt.imshow(np.random.random((100, 100)), cmap=truncated_cmap)

plt.subplots_adjust(bottom=0.1, right=0.8, top=0.9)
cax = plt.axes([0.85, 0.1, 0.075, 0.8])
plt.colorbar(cax=cax)
plt.show()

如果需要更高紫色占比,可将linspace的第二个参数调小,比如改为0.7、0.6,丢弃更多蓝色部分。

方案3:调整数值映射边界(无需引入额外依赖)

通过设置imshow的vmax参数,将高于该值的所有像素都映射为色卡最右端的浅蓝,变相压缩蓝色显示范围,提升紫色占比:

import matplotlib.pyplot as plt
import numpy as np

# Fixing random state for reproducibility
np.random.seed(19680801)

plt.subplot(111)
# 设置vmax=0.8,高于0.8的数值统一映射为最浅的蓝色,其余0-0.8的数值覆盖完整紫到浅蓝渐变
plt.imshow(np.random.random((100, 100)), cmap=plt.cm.BuPu_r, vmax=0.8)

plt.subplots_adjust(bottom=0.1, right=0.8, top=0.9)
cax = plt.axes([0.85, 0.1, 0.075, 0.8])
plt.colorbar(cax=cax)
plt.show()

vmax数值越小,紫色渐变覆盖的数值范围越大,整体配色越偏紫。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:57:01