散景-带有百分号的格式标签

时间:2018-08-22 14:19:46

标签: python bokeh

使用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)

任何帮助将不胜感激

1 个答案:

答案 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), ...)
    

    注意:未经测试,因为您没有提供完整的示例代码,可以对其进行测试,但是应该放在球场上