gpt4 book ai didi

python - Matplotlib:如何让 imshow 从其他 numpy 数组读取 x、y 坐标?

转载 作者:太空狗 更新时间:2023-10-29 21:25:32 24 4
gpt4 key购买 nike

当你想用 imshow 绘制一个 numpy 数组时,你通常会这样做:

import numpy as np
import matplotlib.pyplot as plt

A=np.array([[3,2,5],[8,1,2],[6,6,7],[3,5,1]]) #The array to plot

im=plt.imshow(A,origin="upper",interpolation="nearest",cmap=plt.cm.gray_r)
plt.colorbar(im)

这给了我们这个简单的图像: enter image description here

在这张图片中,xy 坐标只是从数组中每个值的位置中提取出来的。现在,假设 A 是一个引用某些特定坐标的值数组:

real_x=np.array([[15,16,17],[15,16,17],[15,16,17],[15,16,17]])
real_y=np.array([[20,21,22,23],[20,21,22,23],[20,21,22,23]])

这些值只是为了说明我的情况而编造的。 有没有办法强制 imshow 为 A 中的每个值分配对应的坐标对 (real_x,real_y)?

附注:我并不是要在基于数组的 x 和 y 中添加或减去某些内容以使其匹配 real_xreal_y ,但对于从 real_xreal_y 数组读取这些值的东西。预期的结果是 x 轴为 real_x 值且 y 轴为 real_y 值的图像。

最佳答案

设置范围

假设你有

real_x=np.array([15,16,17])
real_y=np.array([20,21,22,23])

您可以将图像范围设置为

dx = (real_x[1]-real_x[0])/2.
dy = (real_y[1]-real_y[0])/2.
extent = [real_x[0]-dx, real_x[-1]+dx, real_y[0]-dy, real_y[-1]+dy]
plt.imshow(data, extent=extent)

改变刻度标签

另一种方法是只更改刻度标签

real_x=np.array([15,16,17])
real_y=np.array([20,21,22,23])
plt.imshow(data)
plt.gca().set_xticks(range(len(real_x)))
plt.gca().set_yticks(range(len(real_x)))
plt.gca().set_xticklabels(real_x)
plt.gca().set_yticklabels(real_y)

关于python - Matplotlib:如何让 imshow 从其他 numpy 数组读取 x、y 坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44260491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com