gpt4 book ai didi

Python Tkinter : Embed a matplotlib plot in a widget

转载 作者:太空宇宙 更新时间:2023-11-03 15:18:33 28 4
gpt4 key购买 nike

我已经搜索过了,例如Python Tkinter Embed Matplotlib in GUI但还是想不通。基本上我试图在由 tkinter 组成的球员窗口内为篮球比赛的球员能力绘制一个精美的图表

    self.fig = Figure(figsize=(1.5,1.5))
self.ax = self.fig.add_axes([0.025,0.025,0.95,0.95],polar=True)
self.plot_widget = FigureCanvasTkAgg(self.fig, master=self.top)
self.ax.grid(False)

N = 5
theta = np.arange(0.0, 2*np.pi, 2*np.pi/N)
radii = [self.thisPlayer.rebounds,self.thisPlayer.freeThrows,self.thisPlayer.steal,self.thisPlayer.underRim,self.thisPlayer.distance]
width = [2*np.pi/(N),2*np.pi/(N),2*np.pi/(N),2*np.pi/(N),2*np.pi/(N)]
bars = pl.bar(0 , 20,width=2*np.pi, linewidth = 0) + pl.bar(theta, radii, width=width, bottom=0.2)

for r,bar in zip(radii, bars):
bar.set_facecolor( cm.jet(r/20.))
bar.set_alpha(0.5)

self.ax.set_xticklabels([])
self.ax.set_yticklabels([])
self.plot_widget.show()
self.plot_widget.get_tk_widget().pack()

发生的情况是播放器窗口现在有绘图小部件,但未显示绘图。另一方面,只需绘制未嵌入 tkinter 中的功能就可以了。对不起我的英语不好。提前致谢

最佳答案

设置self.ax后,您需要调用self.ax.bar,而不是pl.bar来绘制条形图self.fig。这是一个可运行的示例:

import matplotlib.pyplot as plt
import numpy as np
import Tkinter as tk
import matplotlib.figure as mplfig
import matplotlib.backends.backend_tkagg as tkagg
pi = np.pi


class App(object):
def __init__(self, master):
self.master = master
self.thisPlayer = Bunch(
rebounds=20.0,
freeThrows=5.0,
steal=5.0,
underRim=10,
distance=10)
self.fig = mplfig.Figure(figsize=(1.5, 1.5))
self.ax = self.fig.add_axes([0.025, 0.025, 0.95, 0.95], polar=True)
self.canvas = tkagg.FigureCanvasTkAgg(self.fig, master=master)
self.ax.grid(False)

N = 5
theta = np.arange(0.0, 2 * pi, 2 * pi / N)
radii = [self.thisPlayer.rebounds, self.thisPlayer.freeThrows,
self.thisPlayer.steal, self.thisPlayer.underRim,
self.thisPlayer.distance]
width = [2 * pi / (N)] * 5
bars = (
# self.ax.bar(0, 20, width=2 * pi, linewidth=0) +
self.ax.bar(theta, radii, width=width, bottom=0.2))
cmap = plt.get_cmap('jet')
for r, bar in zip(radii, bars):
bar.set_facecolor(cmap(r / 20.))
bar.set_alpha(0.5)
self.ax.set_xticklabels([])
self.ax.set_yticklabels([])
self.canvas.get_tk_widget().pack()
self.canvas.draw()


class Bunch(object):
"""
http://code.activestate.com/recipes/52308
foo=Bunch(a=1,b=2)
"""
def __init__(self, **kwds):
self.__dict__.update(kwds)


def main():
root = tk.Tk()
app = App(root)
tk.mainloop()

if __name__ == '__main__':
main()

关于Python Tkinter : Embed a matplotlib plot in a widget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18716530/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com