holoviz/ holoviews/panel: настройка по умолчанию границ осей голокарты «layouted» в отдельных панелях

#python #holoviews #holoviz #pyviz #panel-pyviz

#python #holoviews #holoviz #pyviz #панель-pyviz

Вопрос:

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

Это проще в следующем примере.

Допустим, я определяю a HoloMap , который я визуализирую как a NdLayout из гистограмм:

 df = pd.DataFrame(
    {
        'level_1': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
        'level_2': ['C', 'D', 'C', 'D', 'C', 'D', 'C', 'D'],
        'group' : ['group1', 'group1', 'group2', 'group2', 'group1', 'group1', 'group2', 'group2'],
        'values': [3, 1, 9, 11, 5, 6, 1, 3],
    }
)
hv_ds = hv.Dataset(
    df, 
    kdims=['level_1', 'level_2', 'group'],
    vdims='values',
)
layout = hv_ds.to(
    hv.Bars,
    kdims=['level_1', 'level_2'],
    vdims='values',
).layout('group')
layout
 

Этот макет четко визуализирован, с установленными ограничениями по оси y, чтобы показать верхнюю часть столбцов:

Планировка

Однако, если я хочу для настройки разделить элементы макета на разных панелях pane , пределы y вычисляются для первого отображаемого элемента:

 pn.Row(
    pn.Column(
        pn.pane.Markdown("## Group 1"),
        layout['group1'],
    ),
    pn.Column(
        pn.pane.Markdown("## Group 2"),
        layout['group2'],
    )
)
 

Усеченный столбчатый график

Есть ли какой-либо способ принудительно вычислить пределы осей y, как при визуализации всего макета?

В качестве дополнительного замечания я заметил, что если я визуализирую полный макет, А ЗАТЕМ его части, границы осей установлены правильно. Возможно, это можно было бы использовать, но я не знаю, как отобразить макет, а затем скрыть его…

 pn.Column(
    layout,
    pn.Row(
        pn.Column(
            pn.pane.Markdown("## Group 1"),
            layout['group1'],
        ),
        pn.Column(
            pn.pane.Markdown("## Group 2"),
            layout['group2'],
        )
    ),
)
 

Как макет, так и строка панели

Комментарии:

1. Снова отличный вопрос. Когда я запускаю ваш код, у меня нет этой проблемы, но когда я делаю выбор внутри графика, а затем сбрасываю значение по умолчанию, я, как и вы, застреваю с неправильными осями. Может быть, это ошибка ?! Вы также можете попробовать опубликовать это на discourse.holoviz.org . где разработчики этих пакетов отвечают на вопросы. Вы также можете попробовать сначала установить последние версии с помощью pip install git github.com/pyviz/hvplot.git и pip устанавливает git github.com/pyviz/holoviews.git

2. Спасибо Sander. К сожалению, я не могу «установить pip», поскольку машина, над которой я работаю, является общей и управляется с помощью conda. Я, тем не менее, обновлю свои пакеты через conda. Я опубликовал на discourse.holoviz, однако я не знаю, соответствует ли публикация ссылки stackoverflow существующему этикету… Я буду держать вас в курсе того, исправило ли это обновление.

3. Да, вы также можете сделать: conda install -c pyviz/label/dev holoviews

4. Мне не удалось установить самую последнюю версию holoviews с помощью conda. Я думаю, что попытаюсь отрегулировать ширину участков с помощью крючков, если это возможно. Еще раз спасибо Sander.

5. установка pip обычно должна работать нормально, даже если вы используете conda, хотя вы можете захотеть conda remove -f <pkg> убедиться, что используете версию pip.