matplotlib imshow——使用任何向量作为轴
matplotlib imshow -- use any vector as axis
我想在 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
参数可用,但遗憾的是它不允许非等距向量。
有人可以帮忙吗?提前致谢。
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()
(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()
请注意,在这种情况下,“矢量”将指定网格的边缘,因此它们只允许 3x3 数组。
我想在 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
参数可用,但遗憾的是它不允许非等距向量。
有人可以帮忙吗?提前致谢。
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()
(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()
请注意,在这种情况下,“矢量”将指定网格的边缘,因此它们只允许 3x3 数组。