Python 未在web2py中显示的绘图基本表
关于wep2py和plotly库,我有一个问题。我试图在web2py中显示一个基本的plotly表。我在python控制器中使用plotly库制作了表格:Python 未在web2py中显示的绘图基本表,python,plotly,web2py,plotly-dash,plotly-python,Python,Plotly,Web2py,Plotly Dash,Plotly Python,关于wep2py和plotly库,我有一个问题。我试图在web2py中显示一个基本的plotly表。我在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],
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
根据,这应该是足够的代码来显示这个图。我确实把它放在了一个函数中,但我认为这不应该是一个问题
但是,当我使用参数将此函数传递到前端时,我的浏览器会尝试打开一个新选项卡,运行web2py的选项卡上的结果显示为“无”。执行
返回fig.show()
会出问题。fig.show()
在计算机上运行代码时,确实会在浏览器中打开绘图,但它返回None
,因此无法在服务器上运行
我建议保存一个静态HTML文件,然后提供该文件,或者使用函数返回HTML
string。我希望有帮助
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)
导入plotly.graph\u objs as go
从plotly.offline导入打印
图1=go.Figure(数据=[{'type':'bar','y':[1,3,2]}],
布局={'height':400})
图2=go.Figure(数据=[go.Table(header=dict)(值=['A得分','B得分]),
单元格=dict(值=[[100,90,80,90],[95,85,75,95]]))
div1=绘图(图1,输出类型为div,包含绘图js=False)
div2=绘图(图2,输出类型为div,包括绘图js=False)
html=”“”\
{div1}
{div2}
“”格式(div1=div1,div2=div2)
以open('multi_plot.html','w')作为f:
f、 编写(html)
Hmm,但随后图表的交互性就消失了。这对我来说是最重要的,哈哈。不过我会试试的!抱歉,你的问题中没有提到任何关于互动性的内容。你写得很清楚:“我正在尝试显示一个基本的Plotly表格”,这是正确的,因为第一步通常是让它工作。因此,如果在一些基本的例子中,它不起相应的作用,那么就没有必要用一个更难的例子来尝试它。。。下次我会更精确的!我认为拥有一个交互式Dash应用程序可以归结为在服务器上启动Dash应用程序(或让它在其他计算机上运行),然后重定向到应用程序运行的地址(同一服务器或其他计算机),最终交互通信是在客户端(浏览器)和运行“Dash服务器”的计算机之间进行的使用特定端口,如8050或smth。因此,WSGI服务器可以重定向到Dash应用程序运行的URL,并且只在似乎“为绘图服务”的开始(可选地启动Dash服务器应用程序本身)起作用。