我想用特金特的Seaborn来策划。到目前为止,我的方法是不同的变化,我无法使它发挥作用。在
我试过了matplotlib.使用(“Agg”),它在页面上正常的Matplotlib图形中工作得很好,但在Seaborn绘图上似乎不起作用
matplotlib.use("TkAgg") # 'Agg' doesnt work either
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import seaborn as sns
import tkinter as tk
def graphspage():
pf = tk.Tk()
pf.geometry("1000x800")
### Works
f = Figure(figsize=(5, 5), dpi=100)
a = f.add_subplot(111)
a.plot(df['date'],daily_drawdown, 'b-',df['date'], daily_drawdownbm, 'k-', linewidth=1)
f.tight_layout()
canvas = FigureCanvasTkAgg(f,pf)
canvas.get_tk_widget().grid(row=1,column=1)
### Doesnt Work
pct = diststats()[4]
pctbm = diststats()[5]
f = Figure(figsize=(5, 5), dpi=100)
a = f.add_subplot(111)
a.sns.distplot(pct,label = 'Portfolio')
a.sns.distplot(pctbm,axlabel='Distribution of returns',label='Benchmark')
canvas = FigureCanvasTkAgg(f,pf)
canvas.get_tk_widget().grid(row=2,column=1)
graphspage()
如果我没弄错的话,OP的原始代码只缺少
canvas.draw()
。furas也表明了这一点。我最近发现很难找到一个完整的例子来说明如何用Seaborn在tkintergui上绘图,尤其是如何在画布上重画。在所以,让我给你一个完整的程序片段,这个程序最初在每次按键时都会绘制和重画。在
我使用了matplotlib提供的一些example code。在
上面的代码在执行和按某些键时的外观如下:
我取了example from Seaborn page-这样我就可以运行它了-我把tkinter放进去了
create_plot
中的代码使用matplotlib
和seaborn
创建绘图,并返回{稍后,这段代码将
figure
添加到tkinter的窗口中示例不需要
matplotlib.use('TkAgg')
也不需要matplotlib.use('Agg')
有}的例子
tkinter.Label
,Seaborn的plot和tkinter.Button
,但我也有{完整代码:
^{pr2}$相关问题 更多 >
编程相关推荐