我可以在matplotlib中显示没有科学符号的图片像素值吗

gis*_*ang 2 python matplotlib

例如,我有一个numpy数组,并使用matplotlib将其显示如下:

import numpy as np
import matplotlib.pyplot as plt

img = np.array([[12,230],[1322,2122]])
tmp = plt.imshow(img,cmap=plt.cm.jet)
plt.colorbar()
plt.show()
Run Code Online (Sandbox Code Playgroud)

结果:

在此处输入图片说明

但我想在右下角显示2122没有科学符号的完整数字2.12e+03防止matplotlib.pyplot中的科学计数法的某些方法和ticklabel_format是否损坏?不工作

我该怎么做?提前致谢。

Muh*_*ami 5

要更改绘图导航栏上的光标数据,请用format_cursor_data我们打算使用的AxesImage替换它。在这种情况下,我们使用str函数将数字转换为没有科学符号的字符串。

首先,我们定义自定义format_cursor_data函数:

def format_cursor_data(data):
    return "[" + str(data) + "]"
Run Code Online (Sandbox Code Playgroud)

然后将AxesImage的format_cursor_data函数替换为我们自己的函数:

tmp.format_cursor_data = format_cursor_data
Run Code Online (Sandbox Code Playgroud)

因此,完整的脚本将如下所示:

import numpy as np
import matplotlib.pyplot as plt

img = np.array([[12,230],[1322,2122]])
tmp = plt.imshow(img,cmap=plt.cm.jet)

def format_cursor_data(data):
    return "[" + str(data) + "]"

tmp.format_cursor_data = format_cursor_data

plt.colorbar()
plt.show()
Run Code Online (Sandbox Code Playgroud)

结果图:

在此处输入图片说明