Начиная с Bokeh 0.12.4
по-прежнему остаются открытые проблемы (функции для разработки, а также несколько ошибок и дополнительная поддержка документации) вокруг theming в Bokeh. То, что в настоящее время поддерживается, основано на типе, используя объект Theme
, который можно установить в текущем документе.
Объект Theme
берет блок JSON, в общем виде:
{
'attrs: {
'SomeTypeName': { 'foo_property': default_foo },
'OtherTypeName': { 'bar_property': default_bar }
}
}
Или для конкретного примера:
from bokeh.io import curdoc
from bokeh.themes import Theme
curdoc().theme = Theme(json={'attrs': {
# apply defaults to Figure properties
'Figure': {
'toolbar_location': None,
'outline_line_color': None,
'min_border_right': 10,
},
# apply defaults to Axis properties
'Axis': {
'major_tick_in': None,
'minor_tick_out': None,
'minor_tick_in': None,
'axis_line_color': '#CAC6B6',
'major_tick_line_color': '#CAC6B6',
},
# apply defaults to Legend properties
'Legend': {
'background_fill_alpha': 0.8,
}
}})
Этот JSON можно также прочитать из файла, используя стандартный Python JSON инструменты.
Если это также происходит в контексте серверного приложения (типа каталога) Bokeh, вы также можете указать тему как файл theme.yaml
в том же каталоге, что и ваш main.py
. См., Например, Gapminder example.
Спасибо, @bigreddot эта информация была очень полезной, и я буду продолжать ссылаться на нее в будущем. «Боке» - многообещающая библиотека. Тем не менее, я узнал, что Bokeh не позволит мне сохранять изображение как «png» программным путем, поэтому, к сожалению, мне пришлось отказаться от отличной библиотеки Datashader. Вместо этого я решил адаптировать 'eq_hist' к конвейеру matplotlib. – gzagatti
Не понимаю. Datashader не требует Bokeh, и Datashader сам по себе может абсолютно генерировать изображения. Фактически, это * все * он делает: Datashader * только * производит изображения. Интерактивная интеграция с Bokeh просто использует Bokeh для отображения изображений в браузере и позволяет сообщать о взаимодействии (например, панорамирование и масштабирование), чтобы можно было создавать новые изображения. Bokeh не может сохранять изображения (пока), но вы можете использовать Datashader самостоятельно для сохранения изображений. FWIW также есть интеграция MPL + Datashader. – bigreddot
Спасибо за отзыв. Я не знал о интеграции «MPL + Datashader». Но то, что мне действительно нужно от «Datashader», было умение создавать легенды. Я не мог найти эту функциональность, и мой поиск привел к [этому] (https://github.com/bokeh/datashader/blob/master/examples/legends.ipynb), который использует 'Bokeh' для создания дискретизированных легенд, и именно поэтому Я начал использовать 'Bokeh'. – gzagatti