我正在为我的数据生成热图。
一切正常,但我有一点问题。我的数据(数字)从0到10.000。
0表示没有(没有数据),此刻0字段只是采用我的颜色标量的最低颜色。我的问题是如何使0的数据具有完全不同的颜色(例如黑色或白色)
只需看看图片就能更好地理解我的意思:
我的代码(代码段)如下所示:
matplotlib.pyplot.imshow(results, interpolation='none')
matplotlib.pyplot.colorbar();
matplotlib.pyplot.xticks([0, 1, 2, 3, 4, 5, 6, 7, 8], [10, 15, 20, 25, 30, 35, 40, 45, 50]);
matplotlib.pyplot.xlabel('Population')
matplotlib.pyplot.yticks([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 10, 15, 20, 25, 30, 'serial']);
matplotlib.pyplot.ylabel('Communication Step');
axis.xaxis.tick_top();
matplotlib.pyplot.savefig('./results_' + optimisationProblem + '_dim' + str(numberOfDimensions) + '_' + statisticType + '.png');
matplotlib.pyplot.close();
答案 0 :(得分:2)
如果您对值0
和0.0001
之间的平滑过渡不感兴趣,则可以将每个等于0
的值设置为NaN
。这将导致白色,而0.0001
仍将是deep blue-ish
。
在下面的代码中我包含了一个示例。我随机生成数据。因此,我从我的数组中选择一个元素并将其设置为NaN
。这导致颜色变白。我还添加了一行,您可以将每个数据点设置为等于0
到NaN
。
import numpy
import matplotlib.pyplot as plt
#Random data
data = numpy.random.random((10, 10))
#Set all data points equal to zero to NaN
#data[data == 0.] = float("NaN")
#Set single data value to nan
data[2][2] = float("NaN")
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.imshow(data, interpolation = "nearest")
plt.show()