как получить ось Y в макете с накоплением графиков боке, снова выровненных по версии боке> = 1.1 - PullRequest
0 голосов
/ 17 января 2020

Я написал пакет на основе боке, чтобы построить кластерные тепловые карты с таким количеством горизонтальных и вертикальных полос аннотаций, сколько необходимо.

Все работало нормально до версии 1.1 для боке. Начиная с версии 1.1 bokeh горизонтальная полоса комментариев больше не выровнена должным образом. Это серьезная проблема для моего пакета.

Есть ли способ вернуть поведение до версии 1.1 с более поздними версиями bokeh? (последняя версия - bokeh 1.4.)

Это пример кода, показывающий, что я имею в виду:

# libraries
from bokeh.layouts import layout
from bokeh.plotting import figure
from bokeh.io import show, export_png

# gerenate bar one
fruits = ['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries']
counts = [5, 3, 4, 2, 4, 6]
p_bar1 = figure(x_range=fruits, y_range=(0,9), title="fruits", plot_height=128)
p_bar1.vbar(x=fruits, top=counts, width=1)

# gerenate bar two
fruits = ['APPLES', 'PEARS', 'NECTARINES', 'PLUMES', 'GRAPES', 'STRAWBERRIES']
counts = [5000, 3000, 4000, 2000, 4000, 6000]
p_bar2 = figure(x_range=fruits, y_range=(0,9000), title="FRUITS", plot_height=128)
p_bar2.vbar(x=fruits, top=counts, width=1)

# stack plots
o_layout = layout([[p_bar1],[p_bar2]])
show(o_layout)
#export_png(o_layout, filename="bokeh_plot.png")

С bokeh 1.0.4 вывод выглядит следующим образом это: enter image description here

При боке> = 1,1 выход выглядит следующим образом: enter image description here

проблема в том, что ось y больше не совпадает! Я полон всяких советов, Элмар

1 Ответ

1 голос
/ 17 января 2020

Ваша лучшая ставка в новой системе макетов - установить общее значение min_border_left, которое достаточно велико для размещения любой оси.

p_bar1.min_border_left = 40
p_bar2.min_border_left = 40

Вам придется экспериментировать, чтобы найти значение, которое вам больше всего нравится в вашей ситуации.

Старое выравнивание происходило из-за сложной системы компоновки на основе ограничений, которая в принципе казалась великолепным подходом, но на практике оказалась непрозрачно непрозрачной и сложной и выполнялась очень, очень плохо (медленно) после относительно низкий порог размера макета. Вероятно, это был самый большой источник проблем и жалоб до того, как его заменили чем-то гораздо более простым и быстрым (но в некоторых случаях менее автоматизированным c).

...