Встраивание диаграммы Mapplotlib p ie в Tkinter Gui Issue - PullRequest
0 голосов
/ 29 апреля 2020

Встраивание диаграммы Mapplotlib p ie в Tkinter Gui help!

Я пытаюсь встроить график ap ie в мое окно Tkinter! До сих пор я уже имел в виду рамки для встраивания графа, frameChartsLT. Этот фрейм также уже имеет холст, canvasChartsLT , размещенный по всей области фрейма, поэтому я надеялся разместить его на любом из них, но я продолжаю получать сообщение об ошибке.

AttributeError: 'tuple' object has no attribute 'set_canvas'

Я проверил весь свой код, но я даже не могу найти где-нибудь, где я написал set_canvas, так что я полностью потерян. Любая помощь будет по достоинству оценена! Я тоже новичок, поэтому чем проще объяснение или исправление, тем лучше для меня, ха-ха!

Это часть моего кода!

import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

# Some in-between code that sets the frame and canvas on my window

stockListExp = [ 'AMZN' , 'AAPL', 'JETS', 'CCL', 'NCLH']
stockSplitExp = [15,25,40,10,10]


plt.pie(stockSplitExp, radius=1, labels=stockListExp,autopct='%0.2f%%', shadow=True,) # 2 decimal points after plot

figChart1 = plt.pie(stockSplitExp, radius=1, labels=stockListExp,autopct='%0.2f%%', shadow=True)
plt.axis("equal")
chart1 = FigureCanvasTkAgg(figChart1,frameChartsLT)
chart1.get_tk_widget().place(x=10,y=10

1 Ответ

1 голос
/ 29 апреля 2020

Вы должны использовать matplotlib.figure.Figure вместо pyplot при объединении tkinter с matplotlib. Ниже с изменениями вашего кода:

import tkinter as tk

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure

root = tk.Tk()
frameChartsLT = tk.Frame(root)
frameChartsLT.pack()

stockListExp = ['AMZN' , 'AAPL', 'JETS', 'CCL', 'NCLH']
stockSplitExp = [15,25,40,10,10]

fig = Figure() # create a figure object
ax = fig.add_subplot(111) # add an Axes to the figure

ax.pie(stockSplitExp, radius=1, labels=stockListExp,autopct='%0.2f%%', shadow=True,)

chart1 = FigureCanvasTkAgg(fig,frameChartsLT)
chart1.get_tk_widget().pack()

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