编辑:感谢@ tmwilson26我能够使用javascript code修复它(请参见下面的评论)。但是,我仍然想知道是否有使用from_py_func的解决方案。


我正在使用Bokeh,并努力使用FuncTickFormatter格式化轴。

具体来说,我正在使用FuncTickFormatter.from_py_func函数。

我下面的代码示例不产生任何结果(但也没有错误消息)。

from bokeh.models import ColumnDataSource,Label, FuncTickFormatter,DatetimeTickFormatter,NumeralTickFormatter, Select, FixedTicker, Slider,TableColumn,DatePicker, DataTable, TextInput, HoverTool,Range1d,BoxZoomTool, ResetTool
from bokeh.plotting import figure, output_file, show, curdoc
from bokeh.layouts import row, column, widgetbox, layout
from bokeh.io import output_notebook, push_notebook, show

output_notebook()

x = np.arange(10)
y = [random.uniform(0,5000) for el in x]

xfactors = list("abcdefghi")

yrange = Range1d(0,5000)

p = figure(x_range = xfactors, y_range = yrange,y_minor_ticks = 10)
p.circle(x,y, size = 14, line_color = "grey" , fill_color = "lightblue", fill_alpha = 0.2)


def ticker():
    a = '{:0,.0f}'.format(tick).replace(",", "X").replace(".", ",").replace("X", ".")
    return a

# If I comment below line out, code is running just fine
p.yaxis.formatter = FuncTickFormatter.from_py_func(ticker)

show(p)


如果我对FuncTickFormatter行进行注释,则代码运行正常。如果在此代码之外使用定义的函数ticker,它也可以使用。

任何关于我做错事的建议都将非常有帮助。

谢谢!

最佳答案

如果from_py_func给您带来麻烦,请尝试使用纯Javascript。下面是一个示例:

p.yaxis.formatter = FuncTickFormatter(code="""
    function(tick){
        function markCommas(x) {
            return x.toFixed(1).replace(/\B(?=(\d{3})+(?!\d))/g, "X");
        }
        return markCommas(tick).replace('.',',').replace("X",'.')
    }
""")


在某些文档中,可能不需要使用tick作为输入参数来定义一个函数,因此您可能需要删除该外部函数,但是在我的版本0.12.2上,这可以产生您所要求的数字例如5.000,0

在较新的版本中,它可能看起来像这样:

p.yaxis.formatter = FuncTickFormatter(code="""
    function markCommas(x) {
        return x.toFixed(1).replace(/\B(?=(\d{3})+(?!\d))/g, "X");
    }
    return markCommas(tick).replace('.',',').replace("X",'.')
""")


如果子功能不起作用,则返回单行返回语句:

p.yaxis.formatter = FuncTickFormatter(code="""
    return tick.toFixed(1).replace(/\B(?=(\d{3})+(?!\d))/g, "X").replace('.',',').replace("X",'.');
""")

关于python - Python/散景-FuncTickFormatter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42376878/

10-12 21:43