首页 > 解决方案 > 散景-带百分号的格式标签

问题描述

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

任何帮助,将不胜感激

标签: pythonbokeh

解决方案


你有两个选择:

  • 您可以在 python 中预先格式化所有数据,将其存储在您的新列中ColumnDataSource,并使用它来驱动标签文本,即类似

    source.data['formatted_y'] = ["%f %" % x for x in source.data['y']]
    LabelSet(text='formatted_y', ...)
    
  • 您可以使用 aCustomJSTransform来转换 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), ...)
    

    注意:未经测试,因为您没有提供可以对其进行测试的完整示例代码,但应该在大致范围内


推荐阅读