python - 使用 imshow 在 matplotlib 中绘制未舍入的值

标签 python numpy matplotlib

我正在使用 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/

相关文章:

python - SQL 更新语句但使用 pyodbc

python - 如何将对象实例传递给 SocketServer.BaseRequestHandler 实例?

Python使用数据系列作为输入函数

python - 如何在带有类实例的数组中使用 np.where() ?

python - 只是对 NumPy 函数的结果感到好奇!

python-3.x - Python/Pandas 按日期聚合

python - WSGIRequest 对象没有属性 PUT

python - 从函数的关键字参数生成 TypedDict

python - 如何使用或操作 hist2d 的输出(返回值)并创建新的直方图

python - python中的多元(多项式)最佳拟合曲线?