Отображение только позиции в пикселях и скрытие значений пикселей в панели инструментов навигации Matplotlib Python - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь нанести данные на холст tkinter, используя функцию «imshow ()» matplotlib.Когда я запускаю код, данные отображаются на холсте, а на панели инструментов навигации отображаются пиксельные координаты (координаты x и y) вместе со значениями пикселей (в скобках).Проблема в том, что я хочу отображать только координаты пикселей и скрывать значения пикселей, которые отображаются на панели инструментов навигации.

Код, который я использую:

import tkinter
import numpy as np
from matplotlib.backends.backend_tkagg import (
    FigureCanvasTkAgg, NavigationToolbar2Tk)
from matplotlib.figure import Figure
import matplotlib.pyplot as plt

import tkinter
import numpy as np
from matplotlib.backends.backend_tkagg import (
    FigureCanvasTkAgg, NavigationToolbar2Tk)
from matplotlib.figure import Figure
import matplotlib.pyplot as plt

root = tkinter.Tk()

fig = Figure(figsize=(5, 4), dpi=100)
fig.subplots_adjust(bottom=0, right=1, top=1, left=0, wspace=0, hspace=0)

ax = fig.add_subplot(111)

class Formatter(object):
    def __init__(self, im):
        self.im = im
    def __call__(self, x, y):       
        return 'x={:.01f}, y={:.01f}'.format(x, y)

data = np.random.random((10,10))

im = ax.imshow(data, interpolation='none')
ax.format_coord = Formatter(im)
plt.show()

canvas1 = FigureCanvasTkAgg(fig, master=root)
canvas1.draw()

toolbar = NavigationToolbar2Tk(canvas1,root)
toolbar.update()
toolbar.pack(side=tkinter.TOP, fill=tkinter.X, padx=8)

canvas1.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1, padx=10, pady=5)

canvas1._tkcanvas.pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1, padx=10, pady=5)

root.mainloop()

Пожалуйста, предложите, как скрыть значения пикселей, отображаемые на панели инструментов навигации (внутри скобок), и отображать только координаты пикселей (координаты x и y).).

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Значение на панели инструментов навигации создается методом format_cursor_data изображений.Вы можете заменить этот метод для возврата пустой строки.

im = ax.imshow(data, interpolation='none')
im.format_cursor_data = lambda e: ""
0 голосов
/ 24 сентября 2019

Один из способов - переопределить метод mouse_move:

class Navigator(NavigationToolbar2Tk):
    def mouse_move(self, event):
        self._set_cursor(event)
        if event.inaxes and event.inaxes.get_navigate():
            try:
                s = event.inaxes.format_coord(event.xdata, event.ydata)
                self.set_message(s)
            except (ValueError, OverflowError):
                pass
        else:
            self.set_message(self.mode)

...

toolbar = Navigator(canvas1,root)

...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...