12

我正在用 matplotlib 绘制一个二维数组。在窗口的右下角显示光标的 x 和 y 坐标。如何在此状态栏中添加有关光标下方数据的信息,例如,而不是“x=439.501 y=317.744”,它会显示“x,y:[440,318] 数据:100”?我能否以某种方式获得此导航工具栏并编写自己的要显示的消息?

我设法为“button_press_event”添加了我自己的事件处理程序,以便在终端窗口上打印数据值,但这种方法只需要大量的鼠标点击并淹没交互式会话。

4

1 回答 1

17

您只需要重新分配ax.format_coord,即用于绘制该标签的回调。

请参阅文档中的此示例,以及 在 matplotlib 图形窗口(使用 imshow)中,如何删除、隐藏或重新定义鼠标的显示位置?光标下的 matplotlib 值

(直接从示例中提取的代码)

"""
Show how to modify the coordinate formatter to report the image "z"
value of the nearest pixel given x and y
"""
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

X = 10*np.random.rand(5,3)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.imshow(X, cmap=cm.jet, interpolation='nearest')

numrows, numcols = X.shape
def format_coord(x, y):
    col = int(x+0.5)
    row = int(y+0.5)
    if col>=0 and col<numcols and row>=0 and row<numrows:
        z = X[row,col]
        return 'x=%1.4f, y=%1.4f, z=%1.4f'%(x, y, z)
    else:
        return 'x=%1.4f, y=%1.4f'%(x, y)

ax.format_coord = format_coord
plt.show()
于 2013-04-08T14:14:14.790 回答