在Tkinter Python上绘制图

Fxs*_*576 7 python tkinter plotly

是否可以在Tkinter GUI上显示Plotly图表?我一直在努力使这种情况发生,但无济于事。

这是我的代码(Plotly代码是从Plotly网站复制的):

from tkinter import *
import plotly.plotly as py
import plotly.graph_objs as go 

from datetime import datetime
import pandas.io.data as web


mGui = Tk()

mGui.geometry('651x700+51+51')
mGui.title('Plotly at Tkinter')

df = web.DataReader("AAPL", 'yahoo',
                    datetime(2007, 10, 1),
                    datetime(2016, 7, 11))

trace = go.Scatter(x=df.index,
                   y=df.High)


data = [trace]
layout = dict(
    title='Time series with range slider and selectors',
    xaxis=dict(
        rangeselector=dict(
            buttons=list([
                dict(count=1,
                     label='1m',
                     step='month',
                     stepmode='backward'),
                dict(count=6,
                     label='6m',
                     step='month',
                     stepmode='backward'),
                dict(count=1,
                    label='YTD',
                    step='year',
                    stepmode='todate'),
                dict(count=1,
                    label='1y',
                    step='year',
                    stepmode='backward'),
                dict(step='all')
            ])
        ),
        rangeslider=dict(),
        type='date'
    )
)

fig = dict(data=data, layout=layout)
py.iplot(fig)

mGui.mainloop()
Run Code Online (Sandbox Code Playgroud)

先感谢您。

Jea*_*lle 5

根据: https: //plotly.com/python/renderers/ 可用的plotly渲染器有:

 ['plotly_mimetype', 'jupyterlab', 'nteract', 'vscode',
 'notebook', 'notebook_connected', 'kaggle', 'azure', 'colab',
 'cocalc', 'databricks', 'json', 'png', 'jpeg', 'jpg', 'svg',
 'pdf', 'browser', 'firefox', 'chrome', 'chromium', 'iframe',
 'iframe_connected', 'sphinx_gallery']
Run Code Online (Sandbox Code Playgroud)

这意味着 tkinter 不可能直接处理用户交互事件。因此,最接近您想要的就是生成非交互式绘图渲染,例如 png/jpg 并将其显示在 tkinter 画布中。至少画布允许平移/扫描和缩放。另一种选择是从 tkinter 应用程序打开 Web 浏览器,但这意味着用户不会直接与原始 tkinter 应用程序交互。