Как использовать один и тот же NavigationToolbar2Tk для нескольких графиков matplotlib - PullRequest
0 голосов
/ 08 мая 2020

У меня в записной книжке несколько страниц и на каждой по несколько графиков.

Есть ли способ использовать одну панель инструментов навигации для всех графиков на странице записной книжки? Или как я могу разместить каждую панель инструментов навигации непосредственно под графиком, которым она управляет?

Я пробовал добавить padx и pady, которые, как я думал, заставят их под графиком, но он продолжает помещать обе панели инструментов под кнопкой Quit.

Я новичок в Python и очень пытаюсь найти ответ на этот вопрос!

import numpy as np
import matplotlib.pyplot as plt
import tkinter as app
from tkinter import ttk
from matplotlib.collections import LineCollection
from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg, NavigationToolbar2Tk)
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure

x = np.linspace(1, 10, 10)
y = np.square(x)
z = x

#Make the root widget
root = app.Tk()

#Make the notebook
nb = ttk.Notebook(root)
nb.pack()
root.title("Test")

#plot first graph
f1 = app.Frame(nb)
nb.add(f1, text="Test")
app.Label(f1, text="Test window 1").pack(padx=5, pady=5)

fig1 = Figure(figsize=(5, 4), dpi=100)
fig1.add_subplot(111).plot(x, y)

canvas1 = FigureCanvasTkAgg(fig1, master=f1)
canvas1.draw()
canvas1.get_tk_widget().pack(side=app.TOP, fill=app.BOTH, expand=1)

#add toolbar
toolbar1 = NavigationToolbar2Tk(canvas1, f1)
toolbar1.update()
canvas1.get_tk_widget().pack(side=app.TOP, fill=app.BOTH, expand=1)

#plot second graph
fig2 = Figure(figsize=(5, 4), dpi=100)
fig2.add_subplot(111).plot(x, z)

canvas2 = FigureCanvasTkAgg(fig2, master=f1)
canvas2.draw()
canvas2.get_tk_widget().pack(side=app.TOP, fill=app.BOTH, expand=1, padx=5, pady=5)

#add toolbar
toolbar2 = NavigationToolbar2Tk(canvas2, f1)
toolbar2.update()
canvas2.get_tk_widget().pack(side=app.TOP, fill=app.BOTH, expand=1)

app.Button(f1, text='Exit', command=root.destroy).pack(padx=50, pady=50)

nb.select(f1)

nb.enable_traversal()

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