Пример переделки ползунков цвета боке ⇐ Python

Программы на Python
Anonymous
Пример переделки ползунков цвета боке

Сообщение Anonymous »

Обзор проблемы
Я пытаюсь адаптировать пример слайдера цвета боке, который можно найти здесь: https://docs.bokeh.org/en/ последний/docs/examples/interaction/js_callbacks/color_sliders.html. Идея состоит в том, чтобы иметь два ползунка: «Часы работы» и «Месяц». При изменении значений в ползунке должно отображаться значение, похожее на шестнадцатеричный код цвета в примере галереи боке, но это должна быть запись фактора в приведенном ниже фрейме данных.
Dataframe
Базовый фрейм данных имеет вид:
[img]https://i. sstatic.net/3GFpZnEl.png[/img]

Выбор «фактора»

Фактор Значение, которое должно отображаться в прямоугольнике боке для значений ползунка «месяц = ​​M» и «Часы работы = R», должно быть значением в столбце «Фактор» df, где df.Month == M и наибольшее количество часов работы, такое что df['Runs Часы']


Год
Месяц
Импорт
Часы работы
Фактор




2024
2
40,0398
41,0
1,0239811


2023
2
37,1329
44,61.2010879


2022
2
34,6993
53,8
1,5504635


2021
2
31,9609
73,62.3028137



на данный момент
В настоящее время у меня есть приведенный ниже пример, который не совсем верен - он создает два ползунка и прямоугольник/текст почти так, как ожидалось, за исключением того, что он показывает все факторы ценности (т. весь столбец в виде строк, разделенных запятыми), а изменение ползунков ничего не дает. Если бы ползунки были на M=2 и R=55, я бы ожидал увидеть 1,5504635 в поле рядом с ползунками.

Код: Выделить всё

source = ColumnDataSource(data = {'Year':[tuple(df.Year)], 'Month':[tuple(df.Month)], 'Rhours':[tuple(df['Runs Hours'])], 'Factor':[tuple(df.Factor)]})

# create first plot, as a rect() glyph and centered text label, with fill and text color taken from source
p = figure(x_range=(-8, 8), y_range=(-4, 4), width=400, height=300, title='Move sliders to change', tools='')

p.rect(0, 0, width=18, height=10, fill_color=f'{ff.Forsa_Blue[0]}', line_color = 'black', source=source)

p.text(0, 0, text='Factor', text_color='Black', alpha=0.6667, text_font_size='18px', text_baseline='middle', text_align='center', source=source)

rhours = Slider(title = "Run Hours", start = 0, end = 150, value = 30, step = 1)
month = Slider(title = "Month", start = 1, end = 12, value = 1, step = 1)

callback = CustomJS(args=dict(source=source, rhours=rhours, month=month), code="""

const R = rhours.value | 0
const M = month.value | 0

// Utility functions to perform dataframe-like operations:
const select = (source, field) => source.map(row => row[field]);
const max    = (source, field) => Math.max(...select(source, field));

function getFactorForMaxRunHours(source, month, rhours) {
source = source.filter(row => row.Month === M && row.RunHours  row.RunHours === maxRunHours)?.Factor;
}

const Factor = getFactorForMaxRunHours(source, month, rhours)

source.data = {Factor:[Factor]}

""")

rhours.js_on_change('value', callback)
month.js_on_change('value', callback)

show(row([p, column([rhours, month])]))
Может ли кто-нибудь подсказать, что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ple-rework

Вернуться в «Python»