在 Tkinter Python 上绘制图表 [英] Plotly Chart at Tkinter Python

查看:155
本文介绍了在 Tkinter Python 上绘制图表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

is it possible to show Plotly chart at Tkinter GUI? I have been trying to make this happens but to no avail.

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

Here is the code I have (the Plotly code is copied from the Plotly website):

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()

提前致谢.

推荐答案

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

According to: https://plotly.com/python/renderers/ The available plotly renderers are:

 ['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']

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

This means that it is not possible to have tkinter directly handle plotly user interactive events. The closest to what you want would hence be to generate a non interactive plotly rendering eg a png/jpg and display it in a tkinter canvas. At least canvas would allow to pan/scan and zoom. Another alternative would be to open a web browser from the tkinter app but this means user will not directly interact with the original tkinter application.

这篇关于在 Tkinter Python 上绘制图表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆