使用Python3和Bokeh 0.13.0
我有一个图,它使用22.6这样的浮点数。这些数字实际上是百分比。我在一条线上的每个点都有标签,但是我想不出一种在标签中包含%符号的方法(例如22.6%)。我可以很好地格式化轴,但是标签给我带来了麻烦。这是定义标签的代码部分。
labels = LabelSet(x='x', y='y', text='y', level='glyph',y_range_name="line",
x_offset=-8, y_offset=10, source=source_line, render_mode='canvas',
text_font_size='8pt', text_color='white', background_fill_color="gray")
p.add_layout(labels)
任何帮助将不胜感激
答案 0 :(得分:2)
您有两个选择:
您可以使用python预格式化所有数据,将其存储在ColumnDataSource
的新列中,然后使用它来驱动标签文本,例如
source.data['formatted_y'] = ["%f %" % x for x in source.data['y']]
LabelSet(text='formatted_y', ...)
您可以使用CustomJSTransform
来转换JavaScript端上的数据,例如
from bokeh.models import CustomJSTransform
from bokeh.transform import transform
formatter = CustomJSTransform('y', func="", v_func="""
out = []
for (i=0; i < xs.length; i ++) {
out.push(xs[i] + " %")
}
return out
""")
LabelSet(text=transform('y', formatter), ...)
注意:未经测试,因为您没有提供完整的示例代码,可以对其进行测试,但是应该放在球场上