Python 使用imshow在matplotlib中打印未舍入的值

Python 使用imshow在matplotlib中打印未舍入的值,python,numpy,matplotlib,Python,Numpy,Matplotlib,我正在用matplotlib(imshow函数)绘制numpy数组。其大小为1000*3000,其值是介于0和2000之间的浮点值 当最大值在10左右时(这只是为了测试),我的图上的值是正确的,但是有了这个幅度,所有的值都被舍入为int,所以我看不到数组中某些部分的细微差别 imshow中是否有对应于该问题的参数?我想到了第二个(cmap=None),但没有成功 以下是一个例子: import numpy as np import matplotlib.pyplot as plt import

我正在用matplotlib(imshow函数)绘制numpy数组。其大小为1000*3000,其值是介于0和2000之间的浮点值

当最大值在10左右时(这只是为了测试),我的图上的值是正确的,但是有了这个幅度,所有的值都被舍入为int,所以我看不到数组中某些部分的细微差别

imshow中是否有对应于该问题的参数?我想到了第二个(cmap=None),但没有成功

以下是一个例子:

import numpy as np
import matplotlib.pyplot as plt
import random as rand

data = np.zeros((10,10))

for i in range(10):
    for j in range(10):
        data[i,j] = 900 + 10*i + rand.random()

plt.imshow(data)
plt.show()

matplotlib窗口中的值都是整数,而在实际数组中则不是。

您可以修改坐标格式设置程序。给出了一个官方示例。此外,问题答案的第一部分显示了做同一件事的略微不同的方式。我修改了代码,使x和y坐标为整数,而z为带4位小数的浮点:

class Formatter(object):
    def __init__(self, im):
        self.im = im
    def __call__(self, x, y):
        z = self.im.get_array()[int(y), int(x)]
        return 'x=%i, y=%i, z=%1.4f' % (x, y, z)

data = np.zeros((10, 10))

for i in range(10):
    for j in range(10):
        data[i, j] = 900 + 10 * i + rand.random()

fig, ax = plt.subplots()
im = ax.imshow(data)
ax.format_coord = Formatter(im)

plt.show()

A会很有帮助。虽然坐标格式设置器示例是正确的,但在默认情况下,此答案中的格式设置器不正确半个像素。