散景jupyter中的圆形图不显示

时间:2016-07-15 21:36:09

标签: python ipython visualization jupyter bokeh

我正试图在像这样的jupyter笔记本中制作一个boke 0.12.0的圆形图:

s5 = figure(toolbar_location="above", x_axis_type = 'datetime')
s5.circle([1467568091,1467568152,1467568213],[1,1,1])
s5.xaxis.formatter = DatetimeTickFormatter(formats = dict(
    seconds=["%d %m %Y %H %M %S"],
    minutes=["%d %m %Y %H %M %S"],
    hours=["%d %m %Y %H %M %S"],
    days=["%d %m %Y %H %M %S"],
    months=["%d %m %Y %H %M %S"],
    years=["%d %m %Y %H %M %S"],
   )
)
s5.xaxis.major_label_orientation = np.pi/4
show(s5)

然而,它没有显示任何内容,我收到一个javascript错误:

TypeError: j is undefined
inline_js</Bokeh</<["models/formatters/datetime_tick_formatter"]</o</e.prototype.doFormat()
 main.min.js:60
inline_js</Bokeh</<["models/axes/axis"]</o</e.prototype._tick_label_extent()
 main.min.js:59
inline_js</Bokeh</<["models/axes/axis"]</o</e.prototype._get_size()
 main.min.js:59
inline_js</Bokeh</<["core/layout/side_panel"]</T()
 main.min.js:56
inline_js</Bokeh</<["models/plots/plot_canvas"]</_</e.prototype.update_constraints()
 main.min.js:66
inline_js</Bokeh</<["models/plots/plot_canvas"]</_</e.prototype.render()
 main.min.js:66
inline_js</Bokeh</<["core/util/throttle"]</i/i()
 main.min.js:57

这里出了什么问题?

1 个答案:

答案 0 :(得分:1)

如果您要替换格式字典,则必须注意制作具有每种可能的分辨率的格式字典。在这种情况下,您已经停止了"milliseconds"的条目。以下代码生成一个图:

s5 = figure(toolbar_location="above", x_axis_type = 'datetime')
s5.circle([1467568091,1467568152,1467568213],[1,1,1])
s5.xaxis.formatter = DatetimeTickFormatter(formats = dict(
    seconds=["%d %m %Y %H %M %S"],
    minutes=["%d %m %Y %H %M %S"],
    hours=["%d %m %Y %H %M %S"],
    days=["%d %m %Y %H %M %S"],
    months=["%d %m %Y %H %M %S"],
    years=["%d %m %Y %H %M %S"],
    milliseconds=["%d %m %Y %H %M %S"],
))
s5.xaxis.major_label_orientation = np.pi/4
show(s5)

另一种选择是不替换原始的.formats dict,而是设置替换原始的任何或所有的新键/值。

这绝对是一个太容易陷入的陷阱。如果您想在执行以下任何或所有操作的project GitHub上发布问题/公关:

  • 添加文档支持,明确指出所有密钥都必须存在,以及所需的密钥是什么

  • 添加验证检查以警告所有必需的密钥是否不存在

这将有助于所有Bokeh用户,当然值得赞赏。我们总是很乐意帮助新贡献者制作PR,但最好的合作方式可能是public mailing list