我正在使用 matplotlib (imshow 函数)绘制 numpy 数组。它的大小为 1000*3000,其值在 0 到 2000 之间 float 。
当最大值约为 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 窗口中的值都是整数,而在实际数组中则不是。
最佳答案
您可以修改坐标格式化程序。官方示例如图here 。另外,this的答案的第一部分问题显示做同一件事的方式略有不同。我修改了代码,使 x 和 y 坐标为整数,而 z 为具有 4 位小数的 float :
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()
关于python - 使用 imshow 在 matplotlib 中绘制未舍入的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43278813/