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
Ich bin mit Bokeh und kämpfen meine Achse zu formatieren FuncTickFormatter
verwenden.
Speziell verwende ich die FuncTickFormatter.from_py_func
Funktion.
Mein Beispiel unten führt zu keinem Ergebnis (aber auch keine Fehlermeldung).
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)
Wenn ich die FuncTickFormatter Zeile auskommentieren, läuft der Code gerade gut. Auch die definierte Funktion ticker
funktioniert, wenn ich sie außerhalb dieses Codes verwende.
Jeder Rat, was ich falsch mache, wäre sehr hilfreich.
Danke!
Momentan ist 'tick' nicht irgendwo im Programm im inneren Bereich von' ticker' oder im äußeren Hauptbereich definiert. Sollte 'tick' ein Eingabeargument für' ticker' sein? – tmwilson26
Ja, ich weiß. Aber so wie ich die Dokumentation verstehe, muss ich sie nicht definieren (siehe [Bokeh] (http://bokeh.pydata.org/en/latest/docs/user_guide/styling.html#functickformatter). Offensichtlich habe ich nicht t mach es völlig richtig, aber ... – FredMaster
Vielleicht mag meine Version es nicht, weil es 'ValueError zurückgibt: Funktion" func "kann nur ein Argument haben, aber 0 wurden geliefert.' wenn ich' tick' nicht definiere als eine Eingabe.
Das heißt, die Handlung ist immer noch leer, es sei denn, ich formatiere Ihre Zeichenfolge mit '%' anstelle der 'format' Methode – tmwilson26