具有sizing_mode属性的Python Holoviews响应图

时间:2018-10-08 18:39:14

标签: python charts responsive bokeh holoviews

我正在使用Holoviews和Bokeh并遇到问题。 使用Bokeh,我可以指定sizing_mode =“ scale_width”属性,这样我的图表就可以响应。 现在它可以正常工作。 但是我找不到霍沃维人这样的东西。

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 :(得分:0)

到目前为止,您无法直接通过Holoviews进行此操作,但是有一种方法可以从Holoviews中提取散景图。这个想法取自“结合HoloView和Bokeh图/小部件”下的this Holoviews page

可以使上面的示例响应如下:

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)