在Bokeh中使用适当的上标格式化日志轴标签

时间:2016-05-30 23:55:06

标签: python bokeh

诚然,这是一个轻微的烦恼。使用对数刻度轴时,Bokeh将刻度标签格式化为" 10 ^ 1"而不是" 10 1 "

enter image description here

有什么方法可以修改它,所以它使用上标?

或者,我想用JUST标记指数。无论哪种方式看起来都比现在好多了。

1 个答案:

答案 0 :(得分:3)

从Bokeh 0.11.1开始,无法获得实际的上标。对LaTeX标签的支持是一项长期的功能要求,但最近的一些其他工作可能有助于为最终在不久的将来添加它做好准备。

同时,您可以创建自己的自定义TickFormatter。这是一种相当先进的技术,也是相当新的技术。我们仍在为这个特定主题制作文档(下一版本应该提供更多指导)。但这里只是打印指数的完整示例:

from bokeh.plotting import figure, output_file, show
from bokeh.models.formatters import TickFormatter

x = [0.1, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0]
y = [10**xx for xx in x]

output_file("log.html")

class MyTickFormatter(TickFormatter):
    __implementation__ = """
        Model = require "model"

        class MyTickFormatter extends Model
          type: 'MyTickFormatter'

          doFormat: (ticks) ->
            return ("#{ Math.log10(tick) }" for tick in ticks)

        module.exports =
          Model: MyTickFormatter
    """

# create a new plot with a log axis type
p = figure(plot_width=400, plot_height=400,
           y_axis_type="log", y_range=(10**-1, 10**4))

p.line(x, y, line_width=2)
p.circle(x, y, fill_color="white", size=8)

# use the custom TickFormatter
p.yaxis[0].formatter = MyTickFormatter()


show(p)

结果:

enter image description here