【问题标题】:Plotly basic table not showing in web2pyPlotly 基本表未在 web2py 中显示
【发布时间】:2019-11-20 16:05:52
【问题描述】:

我对 wep2py 和 plotly 库有疑问。我正在尝试在 web2py 中显示一个基本的绘图表。我已经在我的 python 控制器中使用 plotly 库制作了表格:

def test_table():
    fig = go.Figure(data=[go.Table(header=dict(values=['A Scores', 'B Scores']),
                                   cells=dict(values=[[100, 90, 80, 90], [95, 85, 75, 95]]))
                          ])
    return fig.show()
    # fig.show() gives the same result

根据plotly docs,这应该足以显示数字。我确实把它放在了一个函数中,但我认为这应该不是问题。

但是当我使用参数将此函数传递给前端时,我的浏览器会尝试打开一个新选项卡,而我的 web2py 正在运行的选项卡上的结果显示为“无”。

【问题讨论】:

    标签: python plotly web2py plotly-dash plotly-python


    【解决方案1】:

    执行return fig.show() 会出现问题。fig.show() 会在您在计算机上运行代码时在浏览器中打开一个绘图,但它会返回None,因此它无法在服务器上运行。

    我建议保存一个静态 HTML 文件,然后您可以提供该文件,或者您可以让您的函数返回 html 字符串。希望对你有帮助

    import plotly.graph_objs as go
    from plotly.offline import plot
    
    fig1 = go.Figure(data=[{'type': 'bar', 'y': [1, 3, 2]}],
                            layout={'height': 400})
    
    fig2 = go.Figure(data = [go.Table(header=dict(values=['A Scores', 'B Scores']),
                                      cells=dict(values=[[100, 90, 80, 90], [95, 85, 75, 95]]))])
    
    div1 = plot(fig1, output_type='div', include_plotlyjs=False)
    div2 = plot(fig2, output_type='div', include_plotlyjs=False)
    
    html = """\
    <html>
        <head>
            <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
        </head>
        <body>
            {div1}
            {div2}
        </body>
    </html>
    """.format(div1=div1, div2=div2)
    
    with open('multi_plot.html', 'w') as f:
        f.write(html)
    

    【讨论】:

    • 嗯,但是图表的交互性会丢失。这对我来说是最重要的事情哈哈。不过我会试试看的!
    • 抱歉,您在问题中没有提及任何有关交互性的内容。你来信写道:“我正在尝试显示一个基本绘图表”
    • 这是正确的,因为第一步通常是让它工作。因此,如果它在一些基本示例中不起作用,则无需尝试使用更困难的示例......下次我会更精确!
    • 我认为拥有一个交互式 Dash 应用程序归结为在服务器上启动一个 Dash 应用程序(或让它在其他计算机上运行),然后重定向到该应用程序运行的地址(同一服务器或其他计算机)最终,交互通信是在客户端(浏览器)和使用特定端口(如 8050 或 smth)运行“Dash 服务器”的计算机之间进行的。因此,WSGI 服务器可以只是重定向到运行 Dash 应用程序的 URL,并且仅在看起来“服务于情节”的开头发挥作用(可选地启动 Dash 服务器应用程序本身)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2018-12-18
    • 2018-10-19
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多