Можно ли использовать запятые вместо точек в качестве десятичных разделителей в боке

# Plot
p = figure(title="Weerstand-temperatuurcoefficient",
           x_axis_label="Temperatuur (C)",
           y_axis_label="Weerstand (\u03A9)",
           plot_width=1520,
           plot_height=770
           )

p.yaxis[0].formatter = NumeralTickFormatter(format="0.00")

В настоящее время у меня есть этот код, но мне было интересно, можно ли использовать запятые вместо точек для отображения десятичных знаков. Я должен сделать это из-за школьных правил, иначе это будет считаться неправильным. Помощь приветствуется.


person Yamairo Martinus    schedule 23.05.2021    source источник
comment
Вы экспериментировали с изменением строки формата?   -  person John Coleman    schedule 23.05.2021
comment
Да, я пробовал формат = 0,00, но это делает так, что десятичных знаков нет.   -  person Yamairo Martinus    schedule 23.05.2021
comment
Это хороший вопрос. Кажется, это пробел в библиотеке. Ваш лучший подход может заключаться в том, чтобы вообще не использовать числовые галочки, а использовать пользовательские строки, которые находятся под вашим полным контролем. Этот вопрос может дать вам некоторые идеи.   -  person John Coleman    schedule 23.05.2021


Ответы (1)


BokehJS использует JavaScript, поэтому по умолчанию у вас будет точка в качестве десятичного разделителя, и, как вы уже проверили, в средствах форматирования Bokeh для этого нет опции. Однако вы можете использовать plot.xaxis.major_label_overrides = {1: "1,0", 2: "2,0"...}, чтобы ваши значения xaxis выглядели так, как вам нравится.

Один из подходов состоит в том, чтобы взять все значения из renderer.data_source.data['x'], поместить их на ось x, а затем заменить их вашими значениями, разделенными запятыми, как это (работает для Bokeh v2.1.1):

from bokeh.plotting import show, figure
from bokeh.models import ColumnDataSource, FixedTicker

source = ColumnDataSource(dict(x=[1,2,3,4], y=[4,5,5,4]))

plot = figure()
lines = plot.line('x', 'y', source = source)

plot.xaxis.ticker = FixedTicker(ticks=[i for i in source.data['x']])
plot.xaxis.major_label_overrides = {i:'{},0'.format(i) for i in source.data['x']}

show(plot)

Если вам нужно динамически обновлять график, вам нужно будет установить обратный вызов CustomJS в диапазоне графика и соответствующим образом обновить значения xaxis, например:

plot.x_range.js_on_change('end', CustomJS(args={..}, code='...'))

введите здесь описание изображения

person Tony    schedule 26.05.2021