matplotlib,pyplot:特定数据值的自定义颜色

时间:2014-10-13 13:39:18

标签: python matplotlib colors plot

我正在为我的数据生成热图。

一切正常,但我有一点问题。我的数据(数字)从0到10.000。

0表示没有(没有数据),此刻0字段只是采用我的颜色标量的最低颜色。我的问题是如何使0的数据具有完全不同的颜色(例如黑色或白色)

只需看看图片就能更好地理解我的意思:

enter image description here

我的代码(代码段)如下所示:

     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();

1 个答案:

答案 0 :(得分:2)

如果您对值00.0001之间的平滑过渡不感兴趣,则可以将每个等于0的值设置为NaN。这将导致白色,而0.0001仍将是deep blue-ish

在下面的代码中我包含了一个示例。我随机生成数据。因此,我从我的数组中选择一个元素并将其设置为NaN。这导致颜色变白。我还添加了一行,您可以将每个数据点设置为等于0NaN

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()

enter image description here