Python 使用imshow在matplotlib中打印未舍入的值
我正在用matplotlib(imshow函数)绘制numpy数组。其大小为1000*3000,其值是介于0和2000之间的浮点值 当最大值在10左右时(这只是为了测试),我的图上的值是正确的,但是有了这个幅度,所有的值都被舍入为int,所以我看不到数组中某些部分的细微差别 imshow中是否有对应于该问题的参数?我想到了第二个(cmap=None),但没有成功 以下是一个例子: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
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会很有帮助。虽然坐标格式设置器示例是正确的,但在默认情况下,此答案中的格式设置器不正确半个像素。