以交互模式在 qwebview 中打开 plotly
open plotly in qwebview in interactive mode
我在 python 的离线模式下使用 plotly
库,我想做的是创建一些情节,将它们保存为本地 html 并加载进入 QWebView 的第二个时刻。
这是带有虚拟变量的箱线图的代码:
from PyQt5.QtWebKitWidgets import QWebView
import plotly
import plotly.graph_objs as go
x1 = [10, 3, 4, 5, 20, 4, 3]
trace1 = go.Box(
x = x1)
layout = go.Layout(
showlegend = True
)
data = [trace1]
fig = go.Figure(data=data, layout = layout)
fn = '/home/matteo/plot.html'
plotly.offline.plot(fig, filename = fn,
auto_open = False)
view = QWebView()
view.load(QUrl.fromLocalFile(fn))
view.show()
我面临两个主要问题:
如果我让代码保持原样,QWebView
将不会显示图像中的任何内容:
如果我用标准浏览器(例如 Firefox)打开 html 文件,我可以看到情节并与之互动,这很好。但是,如果我将 html 页面从浏览器保存在本地目录中,并尝试将保存的文件加载到 QWebView
中,我可以看到该图,但无法与之交互(可能对于某些 Javascript不见了?!):
有人知道如何将交互式离线图表嵌入到 QWebView 中吗?
好的,我应该找到问题所在了。
似乎QWebView加载本地文件有一些困难,因为它太重了(简单绘图大约2mb)。
所以我在保存本地文件时使用了 不 包含 javascript
的选项,并在一秒钟内加载 javascript
谢谢,因为描述 here.
换句话说,创建初始的html标签,包括plotly生成的图形的结果而没有整个javascript代码,并包括link的javascript。
以这种方式文件非常轻,QWebView
打开它没有问题。
# create the initial html code
raw_html = '<head><meta charset="utf-8" /></head>''<head><meta charset="utf-8" /><script src="https://cdn.plot.ly/plotly-latest.min.js"></script></head>'
# call the plot method without all the javascript code
raw_html += plotly.offline.plot(fig, filename = fn, include_plotlyjs=False)
# close the body and html tags
raw_html += '</body></html>'
我在 python 的离线模式下使用 plotly
库,我想做的是创建一些情节,将它们保存为本地 html 并加载进入 QWebView 的第二个时刻。
这是带有虚拟变量的箱线图的代码:
from PyQt5.QtWebKitWidgets import QWebView
import plotly
import plotly.graph_objs as go
x1 = [10, 3, 4, 5, 20, 4, 3]
trace1 = go.Box(
x = x1)
layout = go.Layout(
showlegend = True
)
data = [trace1]
fig = go.Figure(data=data, layout = layout)
fn = '/home/matteo/plot.html'
plotly.offline.plot(fig, filename = fn,
auto_open = False)
view = QWebView()
view.load(QUrl.fromLocalFile(fn))
view.show()
我面临两个主要问题:
如果我让代码保持原样,
QWebView
将不会显示图像中的任何内容:如果我用标准浏览器(例如 Firefox)打开 html 文件,我可以看到情节并与之互动,这很好。但是,如果我将 html 页面从浏览器保存在本地目录中,并尝试将保存的文件加载到
QWebView
中,我可以看到该图,但无法与之交互(可能对于某些 Javascript不见了?!):
有人知道如何将交互式离线图表嵌入到 QWebView 中吗?
好的,我应该找到问题所在了。
似乎QWebView加载本地文件有一些困难,因为它太重了(简单绘图大约2mb)。
所以我在保存本地文件时使用了 不 包含 javascript
的选项,并在一秒钟内加载 javascript
谢谢,因为描述 here.
换句话说,创建初始的html标签,包括plotly生成的图形的结果而没有整个javascript代码,并包括link的javascript。
以这种方式文件非常轻,QWebView
打开它没有问题。
# create the initial html code
raw_html = '<head><meta charset="utf-8" /></head>''<head><meta charset="utf-8" /><script src="https://cdn.plot.ly/plotly-latest.min.js"></script></head>'
# call the plot method without all the javascript code
raw_html += plotly.offline.plot(fig, filename = fn, include_plotlyjs=False)
# close the body and html tags
raw_html += '</body></html>'