【问题标题】:matplotlib: binary heat plotmatplotlib:二进制热图
【发布时间】:2015-04-15 13:05:48
【问题描述】:

假设我有一个 10x10 矩阵,由 0 和 1 组成,表示为列表列表。我如何使用matplotlib 将这样的矩阵表示为红色和黑色正方形网格? (红色为 1,黑色为 0)。

我进行了广泛搜索,但我能找到的最接近的是Plot a black-and-white binary map in matplotlib,但颜色的浮点数小于 1。一旦我在数据中得到 1,情节就会出错。任何人都可以帮忙吗?或者指出可以帮助我克服这个问题的特定 matplotlib 文档?

【问题讨论】:

标签: python matplotlib heatmap


【解决方案1】:

您需要所谓的ListedColorMap

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl

# random data
x = np.random.random_integers(0, 1, (10, 10))

fig, ax = plt.subplots()

# define the colors
cmap = mpl.colors.ListedColormap(['r', 'k'])

# create a normalize object the describes the limits of
# each color
bounds = [0., 0.5, 1.]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)

# plot it
ax.imshow(x, interpolation='none', cmap=cmap, norm=norm)

【讨论】:

  • 还有from_levels_and_colors如果你想要一个一次性生成颜色图和标准的函数。例如。 cmap, norm = from_levels_and_colors([0, 0.5, 1], ['r', 'k'])
  • @tcaswell - 它是最近才添加的(我认为是~1.2?)。奇怪的是,我以为是你添加的,但看起来是菲尔:github.com/matplotlib/matplotlib/commit/…
  • 这可行,但颜色颠倒了:1 是黑色,0 是红色。我更改了cmap 行中的颜色:cmap = mpl.colors.ListedColormap(['k', 'r']),现在它可以工作了!
猜你喜欢
  • 2018-09-25
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
  • 2018-11-23
相关资源
最近更新 更多