【问题标题】:python, tkinter, issues while creating bar graphpython,tkinter,创建条形图时出现问题
【发布时间】:2021-10-09 07:51:48
【问题描述】:

当我尝试使用 python 和 tkinter 创建条形图时收到以下错误消息:

AttributeError: 'FigureCanvasTkAgg' object has no attribute 'show'

这是我的代码

import matplotlib,numpy,sys
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
from tkinter import *
root=Tk()
f=Figure(figsize=(5,4),dpi=100)
ax=f.add_subplot(111)
data=(20,35,30,35,27)
ind=numpy.arange(5)  # the x locations for the groups
width=.5
rects1=ax.bar(ind,data,width)
canvas=FigureCanvasTkAgg(f,master=root)
canvas.show()
canvas.get_tk_widget().pack(side=TOP,fill=BOTH,expand=1)
root.mainloop()

【问题讨论】:

  • 是的! FigureCanvasTkAgg 没有 show 功能!你想做什么?
  • 谢谢回答。我需要在 tkinter 窗口中插入条形图
  • 致电.draw() 而不是.show()

标签: python matplotlib tkinter


【解决方案1】:

只需删除导致问题的行:

import matplotlib,numpy,sys
matplotlib.use('TkAgg')

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
from tkinter import Tk,TOP,BOTH

root=Tk()
f=Figure(figsize=(5,4),dpi=100)
ax=f.add_subplot(111)
data=(20,35,30,35,27)
ind=numpy.arange(5)  # the x locations for the groups
width=.5
rects1=ax.bar(ind,data,width)
canvas=FigureCanvasTkAgg(f,master=root)
canvas.get_tk_widget().pack(side=TOP,fill=BOTH,expand=1)

root.mainloop()

或者将.show()替换为.draw(),就像评论中提到的@acw1668一样。

【讨论】: