matplotlib imshow - 使用任何向量作为轴

时间:2017-07-24 16:01:50

标签: python matplotlib imshow

我想在plt.imshow()中使用任何向量作为轴。

A = np.random.rand(4, 4)
x = np.array([1, 2, 3, 8])
y = np.array([-1, 0, 2, 3])

我想象这样的事情:

plt.imshow(a, x_ax=x, y_ax=y)

我知道有一个extent参数可用,但遗憾的是它不允许使用非等间距的矢量。

有人可以帮忙吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

Imshow图总是等间距。问题是如果你想要有 (a)具有不等间距标签的等间距图,或者 (b)带有标尺的不等间距图。

(a)等间距

import numpy as np
import matplotlib.pyplot as plt

a = np.random.rand(4, 4)
x = np.array([1, 2, 3, 8])
y = np.array([-1, 0, 2, 3])

plt.imshow(a)
plt.xticks(range(len(x)), x)
plt.yticks(range(len(y)), y)
plt.show()

enter image description here

(b)不等间距的情节

import numpy as np
import matplotlib.pyplot as plt

a = np.random.rand(3, 3)
x = np.array([1, 2, 3, 8])
y = np.array([-1, 0, 2, 3])
X,Y = np.meshgrid(x,y)

plt.pcolormesh(X,Y,a)

plt.xticks(x)
plt.yticks(y)
plt.show()

enter image description here

请注意,在这种情况下,“vector”将指定网格的边缘,因此它们只允许3x3数组。