【发布时间】:2016-06-02 16:32:00
【问题描述】:
我想要一个普通的colorbar,但特定值的颜色有些不同。
我的数据涵盖(0,1) 范围,但我想传递一些超出该范围的值(因为它们是错误的),并且我想以主范围之外的另一种颜色查看它们。
所以我想要的是将黑色分配给 -1 值,并将普通颜色条分配给 (0,1) 范围内的值。这可能吗?
【问题讨论】:
标签: python matplotlib colorbar
我想要一个普通的colorbar,但特定值的颜色有些不同。
我的数据涵盖(0,1) 范围,但我想传递一些超出该范围的值(因为它们是错误的),并且我想以主范围之外的另一种颜色查看它们。
所以我想要的是将黑色分配给 -1 值,并将普通颜色条分配给 (0,1) 范围内的值。这可能吗?
【问题讨论】:
标签: python matplotlib colorbar
是的,但您不需要为您的特定情况重建颜色图(这需要一些努力)。您可以使用vmin 和vmax 将这些值保留在一边,说明数据的限制是什么,然后为低于或超过这些限制的所有值指定颜色(使用set_under 和set_over)。
检查以下示例:
import matplotlib.pyplot as plt
import numpy as np
x, y = np.meshgrid(np.linspace(0, 10, 100), np.linspace(0, 10, 100))
im = (x**2 + y**2)/100-0.5 # Creating synthetic data for your example
p = plt.imshow(im.T, vmin=0, vmax=1, origin='lower', interpolation='nearest') # Set limits with vmin and vmax
p.cmap.set_under('k') # Set color under lower limit (k for black)
p.cmap.set_over('w') # Set color over upper limit (w for white)
plt.show()
,结果如下:
0以下都是黑色,1以上都是白色。
【讨论】: