散景+ Holoviews图的M * N布局

问题描述

我有N个图,我想以M * N布局显示这些图,其中M = 1,2,3,.....

    import holoviews as hv
    from bokeh.layouts import layout as bk_lyout
    from bokeh.layouts import row,column
    from bokeh.models import (HoverTool,Panel,CustomJS)
    from bokeh.models.widgets import (Tabs,Select,Button)
    from bokeh.models.widgets.inputs import AutocompleteInput
    from dask import dataframe as dd
    from bokeh.core.enums import SizingMode
    from holoviews.operation.datashader import datashade
    
    def get_vmap(x,y,label=''):
        if x not in cols or y not in cols:
            return None
        hover = HoverTool(tooltips=[('x-value','@' + x + '{%F %H:%M:%ss %6Nms}'),('y-value','$y')],formatters={'@timestamp': 'datetime'})
        curve_generated = curve(x,label=label)
        vmap = datashade(curve_generated,normalization='linear').opts(width=400,height=400)

        range_stream = hv.streams.RangeX(source=curve_generated)
        filtered_zoom = curve_generated.apply(xrange_filter,streams=[range_stream])
        hover_enabled = filtered_zoom.opts(tools=[hover])
        # hover_enabled = hv.util.Dynamic(aggregate(curve_generated,width=50,height=50),operation=hv.QuadMesh).opts(tools=[hover],alpha=0,hover_alpha=0.1)
        return vmap * hover_enabled

     plot_layout = column(children=[]) 
     def modify_doc(doc):
        plots = []
        for key,value in PLOT_INFO.items():
            overlay_plots = []
            for carrier in range(7):
                car_value = value.format(carrier)
                plot_label = "{}-Carrier_{}".format(key.split("_vs_")[1],carrier)
                carrier_plot = get_vmap('timestamp',car_value,label=plot_label)
                if carrier_plot is not None:
                    print('\n Found plot for Carrier {},{}'.format(carrier,carrier_plot))
                    overlay_plots.append(carrier_plot)

            overlaid_plot = None
            for plot in overlay_plots:
                overlaid_plot = overlaid_plot * plot if overlaid_plot is not None else plot
            #overlaid_plot = hv.Overlay(overlay_plots).collate()
            if overlaid_plot is not None:
                try:
                    hv_overlay_plot = renderer.get_plot(overlaid_plot,doc)
                    hv_overlay_plot = bk_lyout([[hv_overlay_plot.state]],sizing_mode='fixed')
                    select.js_link('value',hv_overlay_plot,'sizing_mode')
                    plots.append(hv_overlay_plot)
                    plot_layout.children.append(hv_overlay_plot)
                except Exception as e:
                    print(e)
      tab = Panel(child=plot_layout,title='Interactive Dashboard')

这里plot_layout.children列出了图表,我想以M * N表示。例如10个地块,每行2个,用户应该可以选择修改它,例如选择5个地块然后2行。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)