我会用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轴的单个矩阵(通过用零填充间隙)的原因是组合矩阵将是巨大的并且在条带之间存在大的空间。
答案 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()
现在,如果我们只是致电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()