【发布时间】:2019-07-13 10:43:43
【问题描述】:
第 1 期:
我想不出如何绘制除这块之外的多条单独线的方法:
main_time_line = p.line(x=(start, stop), y=(0, 0))
g1 = p.square(source=source, x='examination__date', y=0, size=4,
color='black', name='g1')
hover_tool.renderers.append(g1)
g2 = p.circle(source=source, x='examination__date', y='level', size=15)
for i, (idate, ilevel, iname) in enumerate(zip(source.data['examination__date'],
source.data['level'],
source.data['examination__name'])):
vert = 'top' if ilevel < 0 else 'bottom'
horizontal = 'right' if ilevel < 0 else 'left'
yoff = -10 if ilevel < 0 else 10
p.line(x=idate, y=(0, ilevel), color='black', line_width=3)
my_txt = Label(x=idate,
y=ilevel,
text=iname,
text_align=horizontal,
text_baseline=vert,
text_font_size='13px',
y_offset=yoff)
p.add_layout(my_txt)
视觉效果或多或少是我想要的,但是使用 for 循环绘制垂直线的事实给小部件带来了问题,即:复选框仅对方形和圆形有反应。
我猜这是因为垂直线是在没有源 arg 的情况下绘制的,因此通过 JS 回调发出更改不会更新它们的数据(源是来自 pandas 数据帧的 ColumDataSource) 在使用源 arg 时,我无法按原样绘制它们。
问题 2: 假设我废弃了 for 循环,我无法操作文本的放置
有什么建议吗?
【问题讨论】: