gpt4 book ai didi

python - 在 Django 模板中嵌入 Plotly 图表

转载 作者:IT老高 更新时间:2023-10-28 20:52:07 26 4
gpt4 key购买 nike

我正在尝试在 Django html 模板中嵌入一个绘图饼图。当图表以“在线模式”(即 html 片段存储在 plotly 服务器上)而不是“离线模式”(即 html 存储在本地时)时,这可以正常工作。在后一种情况下,图表不会出现。我希望能够将 html 存储在我的本地服务器上并从那里嵌入绘图。

这是有效的:

import plotly.plotly as py
import plotly.graph_objs as go
labels = [1,2,3,4]
values = [10,20,30,40]
ndata = 100
fig = {
'data': [{'labels': labels,
'values': values,
'type': 'pie',
'textposition':"none",
'textinfo':"percent",
'textfont':{'size':'12'},
'showlegend':'false'}],
'layout': {'title': 'Total:'+str(ndata),
'showlegend':'false',
'height':'200',
'width':'200',
'autosize':'false',
'margin':{'t':'50','l':'75','r':'0','b':'10'},
'separators':'.,'}
}
plotly_url = py.plot(fig, filename='myfile', auto_open=False)
pie_url = '<iframe width="200" height="200" frameborder="0" seamless="seamless" scrolling="no" src='+plotly_url+'.embed?width=200&height=200&link=false&showlegend=false></iframe>'

注意 pie_url 在 Django 的 Http 渲染请求中作为字符串传递。模板使用 | 安全标记将字符串解释为 html,即 {{ pie_url|safe }}。

这是不起作用的位:

from plotly.offline import download_plotlyjs, plot
import plotly.graph_objs as go
labels = [1,2,3,4]
values = [10,20,30,40]
ndata = 100
fig = {
'data': [{'labels': labels,
'values': values,
'type': 'pie',
'textposition':"none",
'textinfo':"percent",
'textfont':{'size':'12'},
'showlegend':'false'}],
'layout': {'title': 'Total:'+str(ndata),
'showlegend':'false',
'height':'200',
'width':'200',
'autosize':'false',
'margin':{'t':'50','l':'75','r':'0','b':'10'},
'separators':'.,'}
}
plotly_url = plot(fig, filename='file:///home/website/pie.html', auto_open=False)
pie_url = '''<iframe width="200" height="200" frameborder="0" seamless="seamless" scrolling="no" src=\"'''+plotly_url+'''.embed?width=200&height=200&link=false&showlegend=false\"></iframe>'''

任何建议将不胜感激。

最佳答案

您可以将图形的 html 部分作为字符串返回,而不是将 html 写入文件。例如,使用基于类的 TemplateView:

编辑:使用最新(截至 2021/08 年)版本的 plotly 的更新。模板不需要任何更改。

import plotly.graph_objects as go

class Graph(TemplateView):
template_name = 'graph.html'

def get_context_data(self, **kwargs):
context = super(Graph, self).get_context_data(**kwargs)

x = [-2,0,4,6,7]
y = [q**2-q+3 for q in x]
trace1 = go.Scatter(x=x, y=y, marker={'color': 'red', 'symbol': 104, 'size': "10"},
mode="lines", name='1st Trace')

layout=go.Layout(title="Meine Daten", xaxis={'title':'x1'}, yaxis={'title':'x2'})
figure=go.Figure(data=['trace1'],layout=layout)

context['graph'] = figure.to_html()

return context

这是原始代码:

import plotly.offline as opy
import plotly.graph_objs as go

class Graph(TemplateView):
template_name = 'graph.html'

def get_context_data(self, **kwargs):
context = super(Graph, self).get_context_data(**kwargs)

x = [-2,0,4,6,7]
y = [q**2-q+3 for q in x]
trace1 = go.Scatter(x=x, y=y, marker={'color': 'red', 'symbol': 104, 'size': "10"},
mode="lines", name='1st Trace')

data=go.Data([trace1])
layout=go.Layout(title="Meine Daten", xaxis={'title':'x1'}, yaxis={'title':'x2'})
figure=go.Figure(data=data,layout=layout)
div = opy.plot(figure, auto_open=False, output_type='div')

context['graph'] = div

return context

和模板:

{% if graph %}
<div style="width:600;height:500">
{{ graph|safe }}
</div>
{% endif %}

关于python - 在 Django 模板中嵌入 Plotly 图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36846395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com