Адаптивный график Python Holoviews со свойством sizing_mode - PullRequest
0 голосов
/ 08 октября 2018

Я использую Holoviews и Bokeh и у меня есть проблема.Используя Bokeh, я могу указать свойство sizing_mode = "scale_width", поэтому мои графики будут отзывчивыми.И теперь работает нормально.Но я не смог найти ничего подобного для Hovowiews.

boxwhisker = hv.BoxWhisker(df, ['cyl', 'origin'], 'mpg', label='')
boxwhisker.options(show_legend=False, height=200, sizing_mode='scale_width')
renderer = hv.renderer('bokeh')
boxChart = renderer.get_plot(boxwhisker).state
boxChart.name = 'boxChart'

curdoc().add_root(boxChart)

sizing_mode = 'scale_width' - вторая строка не работает, поэтому у меня фиксированный размер диаграммы, а не отзывчивый.

Есть какое-то решение для этого?

1 Ответ

0 голосов
/ 05 февраля 2019

На данный момент вы не можете сделать это напрямую через Holoviews, но есть способ извлечь график Bokeh из графика Holoviews.Идея взята из этой страницы Holoviews в разделе «Объединение HoloViews и графиков / виджетов Bokeh».

Приведенный выше пример можно адаптировать следующим образом:

import holoviews as hv
import pandas as pd
from bokeh.io import curdoc
from bokeh.layouts import layout

hv.extension('bokeh')

data = [[1, 'A', 5],
        [1, 'A', 3],
        [1, 'B', 10],
        [1, 'B', 5],
        [2, 'A', 5],
        [2, 'A', 19],
        [2, 'B', 7],
        [2, 'B', 10]]
df = pd.DataFrame.from_records(data, columns=['cyl', 'origin', 'mpg'])

boxwhisker = hv.BoxWhisker(df, ['cyl', 'origin'], 'mpg', label='')
boxwhisker.options(show_legend=False, height=200)
renderer = hv.renderer('bokeh').instance(mode='server')
doc = curdoc()
box_chart = renderer.get_plot(boxwhisker, doc)
doc.name = 'boxChart'
plot_layout = layout(box_chart.state, sizing_mode='scale_width')
doc.add_root(plot_layout)
...