0

我有以下代码:

matplotlib.pyplot.figure()
matplotlib.pyplot.imshow( myValues )
matplotlib.pyplot.colorbar()
matplotlib.pyplot.title( 'Values' )
matplotlib.pyplot.show()

它创建了一个非常默认的颜色图。myValues 在 [ -1.0, 1.0 ] 的范围内(以后可能会发生变化。我想将所有 0.0 的值都涂成白色。我该如何实现呢?

问候, 麦基

4

1 回答 1

1

这应该做的工作:

from matplotlib import pyplot as plt
import numpy as np

plt.figure()
myValues = np.random.random((10,10))*2 -1
plt.imshow( myValues ,cmap = "RdBu_r" , vmin=-1, vmax=1)
plt.colorbar()
plt.title( 'Values' )
plt.show()

这个想法是:

1- 选择“中间”为白色的颜色图,例如 RdBu_r。有关更多信息,请参阅:

http://wiki.scipy.org/Cookbook/Matplotlib/Show_colormaps

2-将最小值和最大值固定在距零相等的距离处。在您的情况下 vmin=-1,vmax=1 是一个明显的选择。

此解决方案的问题是,如果要更改数据集的范围,则 [vmin,vmax] 之外的值将全部映射到相同的颜色。这可能是也可能不是问题,具体取决于您想要做什么。

于 2014-10-13T15:08:25.667 回答