目前有一个更好的选择,那就是在一个div中做离线绘图,而不是一个完整的html。
这个解决方案不涉及任何黑客。
如果你打电话。
plotly.offline.plot(data, filename='file.html')
它创建了一个名为file.html
的文件,并在你的网络浏览器中打开它。然而,如果你这样做。
plotly.offline.plot(data, include_plotlyjs=False, output_type='div')
的调用将返回一个只包含创建数据所需的div的字符串,例如。
<div id="82072c0d-ba8d-4e86-b000-0892be065ca8" style="height: 100%; width: 100%;" class="plotly-graph-div"></div>
<script type="text/javascript">window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL="https://plot.ly";Plotly.newPlot("82072c0d-ba8d-4e86-b000-0892be065ca8",
[{"y": ..bunch of data..., "x": ..lots of data.., {"showlegend": true, "title": "the title", "xaxis": {"zeroline": true, "showline": true},
"yaxis": {"zeroline": true, "showline": true, "range": [0, 22.63852380952382]}}, {"linkText": "Export to plot.ly", "showLink": true})</script>
请注意,它只是html的一小部分,你应该把它嵌入到一个更大的页面中。为此,我使用一个标准的模板引擎,如Jinga2。
有了它,你可以创建一个html页面,其中有几个以你想要的方式排列的图表,甚至可以把它作为一个服务器对Ajax调用的响应, pretty sweet.
请记住,你需要包括plotly js文件,所有这些图表才能发挥作用。
You could include
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
就在放你得到的那个div之前。如果你把这个js放在页面的底部,那么图表won't work.