2D数组的matplotlib彩色图

55

我本以为这很简单,但是我很难在一个易懂的示例中找到我要的内容。

基本上,我想制作相位图,假设我有一个二维数组,如何使用matplotlib将其转换为可以添加标题、轴和图例(颜色条)的图形。

我正在寻找一个非常简单的解决方案,只使用必需的内容,适用于任何2D数组。

我确定这很简单,但我似乎只是有些迟钝,所以我遇到了很多问题。

我一直在尝试示例,但它们似乎不太适合我的需求:我喜欢这张图的一般外观,我只想能够传入一个2D数组并获得同样的结果:

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

H = [[1,2,3,4][5,6,7,8][9,10,11,12][13,14,15,16]]

fig = plt.figure(figsize=(6, 3.2))

ax = fig.add_subplot(111)
ax.set_title('colorMap')
X,Y = np.meshgrid(xedges, yedges)
plt.pcolormesh(X, Y, H)
ax.set_aspect('equal')

cax = fig.add_axes([0.12, 0.1, 0.78, 0.8])
cax.get_xaxis().set_visible(False)
cax.get_yaxis().set_visible(False)
cax.patch.set_alpha(0)
cax.set_frame_on(False)
plt.colorbar(orientation='vertical')
plt.show()

imshow不起作用?http://matplotlib.org/gallery.html - tacaswell
点击看起来像你想要的图片,它们包含代码。 - tacaswell
2个回答

63

这是最简单的示例,其中包含关键代码行:

import numpy as np 
import matplotlib.pyplot as plt

H = np.array([[1, 2, 3, 4],
          [5, 6, 7, 8],
          [9, 10, 11, 12],
          [13, 14, 15, 16]])

plt.imshow(H, interpolation='none')
plt.show()

这里输入图片描述

编辑:(2023年1月)仍在使用Python 3.9.13


6
在Python 3.4中,使用上述代码会得到一张模糊的图像。我不得不关闭插值功能。plt.imshow(H, interpolation='none') - Sreeragh A R

62

很抱歉,您发布的示例无法正常工作,因为X和Y未定义。所以我们不使用pcolormesh,而使用imshow

import numpy as np
import matplotlib.pyplot as plt

H = np.array([[1, 2, 3, 4],
              [5, 6, 7, 8],
              [9, 10, 11, 12],
              [13, 14, 15, 16]])  # added some commas and array creation code

fig = plt.figure(figsize=(6, 3.2))

ax = fig.add_subplot(111)
ax.set_title('colorMap')
plt.imshow(H)
ax.set_aspect('equal')

cax = fig.add_axes([0.12, 0.1, 0.78, 0.8])
cax.get_xaxis().set_visible(False)
cax.get_yaxis().set_visible(False)
cax.patch.set_alpha(0)
cax.set_frame_on(False)
plt.colorbar(orientation='vertical')
plt.show()

3
请注意,您将在轴图例中获得数组索引。如果您的行和列具有X和Y值,请查看imshow()函数的“extent”参数。 - heltonbiker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接