Я пытался включить 2d/3d-графики с помощью matplotlib в свое приложение с графическим интерфейсом Python с помощью TKinter и добился успеха с 2d-графиками, но не с 3d-графиками. Моя проблема заключается в том, что ни один из 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-график, панорамирование/масштабирование не работает. Я упустил что-то простое или есть проблема с 3D-панорамированием/масштабированием в tkinter с matplotlib?