Python Bokeh绘图工具在测试中工作,但同一代码不';不要在烧瓶应用程序中工作

Python Bokeh绘图工具在测试中工作,但同一代码不';不要在烧瓶应用程序中工作,python,html,flask,bokeh,Python,Html,Flask,Bokeh,我一直在尝试将Bokeh绘图合并到我的Flask web应用程序中,但遇到了一些问题,即我的绘图在呈现为html文件时工作正常,但是否显示???在“我的烧瓶”应用程序中运行时,在Hovertool中。其余的绘图功能正常 起初,我认为html文件如何呈现绘图是个问题,但后来我注意到,如果我重新构造代码并直接在Sublime中运行它,而不是启动应用程序并从页面运行,我会遇到同样的问题。奇怪的是,如果我将所有内容都保存在一个.py文件中而不导入,那么绘图将作为一个独立的.html文件正常工作。我宁愿不

我一直在尝试将Bokeh绘图合并到我的Flask web应用程序中,但遇到了一些问题,即我的绘图在呈现为html文件时工作正常,但是否显示???在“我的烧瓶”应用程序中运行时,在Hovertool中。其余的绘图功能正常

起初,我认为html文件如何呈现绘图是个问题,但后来我注意到,如果我重新构造代码并直接在Sublime中运行它,而不是启动应用程序并从页面运行,我会遇到同样的问题。奇怪的是,如果我将所有内容都保存在一个.py文件中而不导入,那么绘图将作为一个独立的.html文件正常工作。我宁愿不这样做,以使我的代码更易于管理,因为我将生成大量的绘图。下面是我的文件代码。请让我知道,您是否看到我导入的方式会导致state\u trend\u month\u mean()方法/函数出现问题

此外,我将移动我的绘图格式到自己的功能,一旦我得到这个工作。抱歉,代码看起来很糟糕。还在学习。另一件事,由于一个类似的问题,我正在将df转换为dictionary,这是我能够正确渲染绘图的唯一方法。我相信这是因为我缺乏经验

这是我生成图形的代码。最后一个_df.two_year_df()是从另一个.py返回和导入的数据帧。工具提示@nti_per_day是df/dict中的一列,但bokeh将其显示为???在悬停工具中

这是路线

from flask import render_template, request, Blueprint
from bokeh.embed import components
from vgt_web_app.graphs import Graphs as graphs

reports = Blueprint('reports', __name__)

@reports.route('/reports')
def il_reports():
    g = graphs.state_trend_month_mean()
    # graph_data = g
    graph_data = g
    script, div = components(graph_data)
    return render_template('reports.html', title='Reports', graph_data=graph_data, script=script, div=div)
这是html。仍然是基本的,一旦我能正确地显示这个图,它将被完善

{% extends "layout.html" %}
{% block content %}
<!DOCTYPE html>
<html lang="en">

<script src="https://cdnjs.cloudflare.com/ajax/libs/bokeh/2.1.1/bokeh.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bokeh/2.1.1/bokeh-widgets.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bokeh/2.1.1/bokeh-tables.min.js"></script>

<body>
    <h1>Reports</h1>

    {{ div | safe }}
    {{ script | safe }}


</body>

{% endblock content %}
{%extends“layout.html”%}
{%block content%}
报告
{{div | safe}}
{{script | safe}}
{%endblock内容%}

同样,图表除了有???在悬停状态下,查看
???
仅表示一件事:您在工具提示中指定的列名不存在于
ColumnDataSource
中。考虑到您在问题中指定了一个列名:

@nti/日是df/dict中的一列

但在实际代码中,您指定了一些稍有不同的内容:

tooltips=[(“每日NTI”,“每日@NTI”)]

最可能的解释是,您在工具提示中给出了错误的列名。

很抱歉,我写错了。nti_per_day也是一个专栏。我现在编辑了原文。感谢您捕捉到这一点,如果它仍然不起作用,您应该打印出
source.data.keys()
,很可能您会发现
“每天nti”
不存在。可以。我查了source.column_的名字,它就在那里。我会试试看,然后告诉你。我很感激伊托克。你是对的。在我的最后一个二年的测试文件中,我删除了一些旧代码,但忘了在我的flask应用程序中删除。这就是为什么我测试时它能工作的原因,我认为它是完全一样的。非常感谢你。如果没有你的帮助,没有你花更多的时间去疯狂,我会忽略它的。。
{% extends "layout.html" %}
{% block content %}
<!DOCTYPE html>
<html lang="en">

<script src="https://cdnjs.cloudflare.com/ajax/libs/bokeh/2.1.1/bokeh.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bokeh/2.1.1/bokeh-widgets.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bokeh/2.1.1/bokeh-tables.min.js"></script>

<body>
    <h1>Reports</h1>

    {{ div | safe }}
    {{ script | safe }}


</body>

{% endblock content %}