【问题标题】:bokeh plot empty when rendering Flask template渲染 Flask 模板时散景图为空
【发布时间】:2014-08-12 02:17:18
【问题描述】:

我正在尝试使用 embed.autoload_server 函数在一个简单的 Flask 应用程序提供的网页中嵌入散景图,该函数是我在查看 github 上的散景嵌入示例时获得的。在 python 方面,一切似乎都按预期工作,但页面呈现时没有任何数据(即使数据在 JS 绘图对象中)。我确实看到了 5 个散景图操作按钮,但我没有看到实际的图。打开 JS 控制台后,我看到 i 变量在以下语句(第 23512 行,bokeh.js)中以未定义形式返回:

i = this.get('dimension');

因此,ranges[i] 也未定义,这是我在控制台中遇到的错误。

我可以将浏览器导航到实际的 plot json,在那里我可以看到所有预期的数据,这就是我转向 JS 控制台进行故障排除的原因。

任何想法都将不胜感激,我的 JS 目前很生疏。 python“绘图”对象的属性与JS“绘图”对象的属性之间是否存在关系?这似乎只是我的前端对象缺少“尺寸”属性的问题。

在回答这个问题时,这里是代码,它几乎是直接从烛台示例代码中提取的,但那是从几周前拉出来的,所以它很可能过时了。从那以后我又拉了一次,并且没有重新访问此代码,因为创建绘图数据没有问题。

def candlestick():
    store = pd.HDFStore('../data/dt_metastock.h5')

    keys = [key for key in store.keys() if 'daily' in key]
    df = store[keys[0]][:800]
    #df['date'] = pd.to_datetime(df['date'])

    mids = (df.open + df.close)/2
    spans = abs(df.close-df.open)

    inc = df.close > df.open
    dec = df.open > df.close
    w = 12*60*60*1000 # half day in ms

    output_server("candlestick")
    figure(tools="pan,wheel_zoom,box_zoom,reset,previewsave",
           plot_width=1000, name="candlestick")

    hold()

    segment(df.idx, df.high, df.idx, df.low, color='black')
    w = .5
    rect(df.idx[inc].values, mids[inc], w, spans[inc], fill_color="#D5E1DD", line_color="black")
    rect(df.idx[dec].values, mids[dec], w, spans[dec], fill_color="#F2583E", line_color="black")

    curplot().title = keys[0]
    xaxis().major_label_orientation = pi/4
    grid().grid_line_alpha=0.3
    tag = embed.autoload_server(curplot(), cursession())
    return tag

【问题讨论】:

    标签: javascript python bokeh


    【解决方案1】:

    你能发布你的情节代码吗?最近,我们合并了一个新的布局系统,在我看来,您可能正在使用旧方法来设置绘图中的轴...

    【讨论】:

    • 我将python代码发布到上面的问题中。我在 JS 控制台上做了更多工作,似乎还存在 Axis 类的其他属性,例如“bounds”和“major_label_orientation”。我有点困惑为什么在我的情况下似乎缺少“维度”属性。感谢您的帮助。
    • 好的,我已经回去了,现在所有基于散景服务器的示例都有这个问题,所以我的安装显然有问题。一个旧的pyc可能躺在某个地方。 bokeh.__version__ 按预期返回,所以我有点困惑。当我得到它时会发布答案。
    • 不知道你是不是同一个人,如果不是,这对你有帮助,我想:github.com/ContinuumIO/bokeh/issues/1003
    • 是的,就是我。解决了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 2017-06-25
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    相关资源
    最近更新 更多