Я разрабатываю приложение, которое принимает данные от пользователя в форме .csv
и строит график для соответствующих значений, используя matplotlib
.
def plotgraph():
x = []
y = []
data = text.get("1.0", END)
sepFile = data.split('\n')
for plotPair in sepFile:
xAndY = plotPair.split(',')
if len(xAndY[0]) != 0 and len(xAndY[1]) != 0:
x.append(float(xAndY[0]))
y.append(float(xAndY[1]))
graph = Figure(figsize=(5,4), dpi=100)
a = graph.add_subplot(111)
a.plot(x,y)
a.set_xlabel('Velocity')
a.set_ylabel('Absorbance')
canvas = FigureCanvasTkAgg(graph, master=RightFrame)
canvas.show()
canvas.get_tk_widget().grid(column=2, row=1, rowspan=2, sticky=(N, S, E, W))
Мне нужна аналогичная функция, подобная этой Matplotlib: нарисуйте область выбора в форме прямоугольника с помощью мыши в Tkinter
, что дает мне x0, x1, y0, y1
после выбора. Я мог бы заставить уже заданный вопрос работать и настроить его в соответствии со своими потребностями, но не знаю, что я делаю ошибку в __init__(self)
root = Tk()
class Annotate(object):
def __init__(self):
self.fig = mplfig.Figure(figsize=(1.5, 1.5))
self.ax = self.fig.add_subplot(111)
self.ax.plot([0,1,2,3,4],[0,8,9,5,3])
self.canvas = tkagg.FigureCanvasTkAgg(self.fig, master=root)
self.x0 = None
self.y0 = None
self.x1 = None
self.y1 = None
self.ax.figure.canvas.mpl_connect('button_press_event', self.on_press)
self.ax.figure.canvas.mpl_connect('button_release_event', self.on_release)
self.ax.figure.canvas.mpl_connect('motion_notify_event', self.on_motion)
Когда я запускаю этот код, я получаю пустое окно Tk. Может ли кто-нибудь сказать мне, что мне делать и в чем я ошибаюсь