Я пытался включить 2d / 3d графики с помощью matplotlib в мое приложение Python GUI с использованием TKinter и добился успеха с 2d графиками, но не с 3D графиками. Моя проблема заключается в том, что ни один из трехмерных графиков нельзя панорамировать или масштабировать, даже если кнопки на панели навигации реагировали на нажатия кнопок. Вот пример кода, демонстрирующего мою проблему:
import tkinter as tk
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
import numpy as np
root = tk.Tk()
frame = tk.Frame(root)
frame.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
#uncomment as needed to demonstrate 2d/3d plot
#subplot_kw = {'projection':'3d'}
subplot_kw = {}
fig, ax = plt.subplots(subplot_kw=subplot_kw)
if len(subplot_kw) > 0:
ax.plot(range(100), np.random.rand(100), np.random.rand(100))
else:
ax.plot(range(100), np.random.rand(100))
canvas = FigureCanvasTkAgg(fig, frame)
canvas.draw()
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=True)
toolbar = NavigationToolbar2Tk(canvas, frame)
toolbar.update()
root.mainloop()
Поэтому, когда я строю 2d, используя приведенный выше код, панорамирование / масштабирование работает, как и ожидалось. Когда я изменил закомментированные строки и использовал трехмерный график, панорамирование / масштабирование не работает. Я упускаю что-то простое или есть проблема с 3d панорамированием / увеличением в tkinter с matplotlib?