我使用IPython的与matplotlib,我表现出这样的图片:
(开始了:IPython中--pylab)
figure()
im = zeros([256,256]) #just a stand-in for my real images
imshow(im)
现在,我将光标移动到图片,我看到图中的窗口的左下角显示鼠标的位置。 显示的数字是X =列编号,y =行数。 这是极积为导向,而不是面向图像。 我可以修改显示的数字?
- 我的第一选择将显示X =行数*标量,Y =列号*标量
- 我的第二个选择是显示X =行数,y =列数
- 我的第三个选择是不是鼠标位置的显示数字在所有
我可以做这些事情? 我甚至不知道什么叫那个小鼠标悬停测试显示部件。 谢谢!
你可以通过简单地重新分配上做到这一点很简单,每个轴的基础format_coord
中的Axes
对象,如图所示的例子 。
format_coord
是取2个参数(X,Y),并返回一个字符串(其随后在该图中显示的任何功能。
如果你想有没有显示简单地做:
ax.format_coord = lambda x, y: ''
如果你只想要行和列(带出来检查)
scale_val = 1
ax.format_coord = lambda x, y: 'r=%d,c=%d' % (scale_val * int(x + .5),
scale_val * int(y + .5))
如果你想这样做,你尽 IIMAGE,只需定义包装函数
def imshow(img, scale_val=1, ax=None, *args, **kwargs):
if ax is None:
ax = plt.gca()
im = ax.imshow(img, *args, **kwargs)
ax.format_coord = lambda x, y: 'r=%d,c=%d' % (scale_val * int(x + .5),
scale_val * int(y + .5))
ax.figure.canvas.draw()
return im
与太大的测试中,我认为应该更多或更少的可插入式更换plt.imshow
是的你可以。 但它比你想象的更难。
你看到的鼠标跟踪标签通过响应鼠标跟踪呼叫matplotlib.axes.Axes.format_coord产生。 你必须创建自己的轴类(覆盖format_coord做你想要它做什么),然后指示matplotlib取代默认的一个来使用它。
特别:
制作自己的轴子
from matplotlib.axes import Axes
class MyRectilinearAxes(Axes):
name = 'MyRectilinearAxes'
def format_coord(self, x, y):
# Massage your data here -- good place for scalar multiplication
if x is None:
xs = '???'
else:
xs = self.format_xdata(x * .5)
if y is None:
ys = '???'
else:
ys = self.format_ydata(y * .5)
# Format your label here -- I transposed x and y labels
return 'x=%s y=%s' % (ys, xs)
注册您的轴子
from matplotlib.projections import projection_registry
projection_registry.register(MyRectilinearAxes)
创建一个人物,并与您的自定义坐标轴
figure()
subplot(111, projection="MyRectilinearAxes")
画出你的数据之前,
im = zeros([256,256]) #just a stand-in for my real images
imshow(im)
文章来源: In a matplotlib figure window (with imshow), how can I remove, hide, or redefine the displayed position of the mouse? [duplicate]