python - matplotlib、pyplot : custom color for a specific data value

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

最佳答案

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

在下面的代码中我包含了一个示例。我随机生成数据。因此,我从数组中选择一个元素并将其设置为 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()

enter image description here

关于python - matplotlib、pyplot : custom color for a specific data value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26341404/

相关文章:

python - 通过 pipenv 自定义模块搜索路径(PYTHONPATH)

css - 当我将鼠标悬停在表头 CSS 上时如何更改文本的颜色

ios - 不同的颜色,即使 RGB 值相等

基于 Python 文本的游戏装备护甲统计

python - 将行从一个数据库复制到另一个数据库并更改一些值

python - 为什么 'matplotlib' 无法找到指定字体的某些字体粗细?

python - matplotlib 还需要安装哪些其他库来编写 tiff 文件?

css - 如何在 GWT 中生成颜色并在 CSS 中动态应用它

php - 从用户处获取数据并在 python 脚本中使用该数据

python - matplotlib 子图的常用 xlabel/ylabel