我正在尝试编写一个使用Bokeh显示图形的Web应用程序,并显示从API检索的格式化文本。当用户单击按钮时,显示会随图表内容动态变化。是否有标准的方式来格式化和呈现文本,然后使用Bokeh更新它?
我以为我可以用文字字形做到这一点,但到目前为止,我失败了。以下是我尝试为更新操作做的事情:
def update_graph(attrname, old, new):
USER_ID = new
use_df = get_user_df(new, cur, date_from, date_to)
plot1.title = get_api_output(new, INSIGHT_DATE)
textplot.text(3, 3, text=["hellllllo"], text_color="firebrick", text_align="center", text_font_size="20pt")
source1.data['x'] = use_df[use_df['type'] == 0]['date'].values
source1.data['y'] = use_df[use_df['type'] == 0]['value'].values
这大部分工作都很好。我使用get_user_df
从远程数据库中获取一些数据并更新source1
,这可以正常工作。同样,标题会根据需要更新。
然而 textplot
上没有文字字形,并且控制台中没有出现任何错误。发生了什么以及如何动态调整绘图上的文字字形?
这里也是我用来设置相关情况的代码的代码:
#plot utilities
def mtext(p, x, y, text):
p.text(x, y, text=[text],
text_color="firebrick", text_align="center", text_font_size="10pt")
#PLOTS
textplot = Figure(toolbar_location = None, title = 'API text', title_text_font_size='8pt')
mtext(textplot, randint(2, 5), randint(2, 5), 'annotation')
plot1 = Figure(toolbar_location = None, title = 'Distance (k)', title_text_font_size='8pt')
source1 = ColumnDataSource(data = dict(x = use_df[use_df['type'] == 0]['date'].values, y = use_df[use_df['type'] == 0]['value'].values))
plot1.circle('x', 'y', line_color=None, source = source1, color = 'pink', size = 20)