我正试图在像这样的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
这里出了什么问题?
答案 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。