2

我会为此使用 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 轴的单个矩阵(通过用零填充间隙)的原因是组合矩阵会很大并且条带之间有很大的空间。

4

1 回答 1

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()

在此处输入图像描述

于 2012-12-01T15:24:39.187 回答