我正在尝试找到一种方法来将某些数据值与连续颜色图中的特定颜色相关联.
我有一个特定的图像,其值的范围为[min,max],并且我希望以下值[min,q1,q2,q3,max](其中q’n’表示四分位数)与颜色相关联对应于[0,0.25. 0.5、0.75. 1.0].结果,色度的中点将对应于图像中的中值,依此类推…
我一直在四处张望,但我一直无法找到一种方法来做到这一点.
解决方法:
您需要将matplotlib.colors.Normalize子类化,并将新规范的实例传递给imshow / contourf /正在使用的任何绘图功能.
基本思想在第一个选项中进行了说明:Shifted colorbar matplotlib(不要过多说我自己的问题,但我想不出另一个例子.)
但是,该问题专门涉及将单个数据值设置为对应于颜色图中的0.5.不过,将概念扩展为“逐段”规范化并不是很困难:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import Normalize
class PiecewiseNormalize(Normalize):
def __init__(self, xvalues, cvalues):
self.xvalues = xvalues
self.cvalues = cvalues
Normalize.__init__(self)
def __call__(self, value, clip=None):
# I'm ignoring masked values and all kinds of edge cases to make a
# simple example...
if self.xvalue