Matplotlib矩阵/图像明确表示轴的值

时间:2012-12-01 13:31:39

标签: python numpy matplotlib

我会用imshow来做这个,所以我会用它来描述我的问题。 我有几个矩阵,我想在同一轴上绘制。像这样:

import matplotlib.pyplot as plt
import numpy as np

a = np.array([[0,1,2],[0,1,2]])
x = np.array([0,1,2])
y = np.array([0,1])


a2 = np.array([[10,11,12],[10,11,12]])
x2 = np.array([10,11,12])
y2 = np.array([0,1])


plt.imshow(a,extent=[x.min(),x.max(),y.min(),y.max()])
plt.imshow(a2,extent=[x2.min(),x2.max(),y2.min(),y2.max()])

plt.show()

(使用此代码,第一个imshow将被第二个覆盖)

我无法将它们组合成具有一组x和y轴的单个矩阵(通过用零填充间隙)的原因是组合矩阵将是巨大的并且在条带之间存在大的空间。

1 个答案:

答案 0 :(得分:3)

它没有被覆盖,每次都会将轴限制重置为最后一个图像的范围。

只需致电plt.autoscale()

作为您所看到的内容的简单示例:

import numpy as np
import matplotlib.pyplot as plt

data1, data2 = np.random.random((2,10,10))

fig, ax = plt.subplots()
ax.imshow(data1, extent=[-10, 0, -10, 0])
ax.imshow(data2, extent=[10, 20, 10, 20])

plt.show()

enter image description here

现在,如果我们只是致电autoscale

import numpy as np
import matplotlib.pyplot as plt

data1, data2 = np.random.random((2,10,10))

fig, ax = plt.subplots()
ax.imshow(data1, extent=[-10, 0, -10, 0])
ax.imshow(data2, extent=[10, 20, 10, 20])

ax.autoscale()

plt.show()

enter image description here