EDIT: thanks to @tmwilson26 I was able to fix it using
javascript code
(see comments below). However, I would still be interested to know if there is a solution usingfrom_py_func
.Python/Bokeh - FuncTickFormatter
Я использую 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
работает, если я использую ее вне этого кода.
Любые советы о том, что я делаю неправильно, были бы очень полезными.
Спасибо!
Прямо сейчас, 'tick' не определен нигде в программе во внутренней области« тикер »или в основной внешней области. Должен ли 'tick' быть входным аргументом для' ticker'? – tmwilson26
Да, я знаю. Но так, как я понимаю документацию, мне не нужно ее определять (см. [Bokeh] (http://bokeh.pydata.org/en/latest/docs/user_guide/styling.html#functickformatter). Очевидно, t получить его полностью прав, хотя ... – FredMaster
Возможно моя версия не нравится, потому что он возвращает 'ValueError: Function" func "может иметь только один аргумент, но 0 были поставлены.' если я не определяю 'tick' в качестве входных данных.Таким образом, сюжет по-прежнему пустой, если я не переформатирую вашу строку, используя '%' вместо метода 'format'. – tmwilson26