Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何创建具有多个独立DynamicMap绘图的Holoviews应用程序?_Python_Matplotlib_Plot_Bokeh_Holoviews - Fatal编程技术网

Python 如何创建具有多个独立DynamicMap绘图的Holoviews应用程序?

Python 如何创建具有多个独立DynamicMap绘图的Holoviews应用程序?,python,matplotlib,plot,bokeh,holoviews,Python,Matplotlib,Plot,Bokeh,Holoviews,我正在尝试使用HoloView创建DynamicMap类型的绘图的网格布局(比如2x2)。 这将作为Holoviews/Bokeh应用程序使用 创建DMAP后,我使用 layout = hv.Layout([dmap1, dmap2]).cols(2) 此布局将生成两个并排的绘图 我面临的问题是,默认情况下,每个动态地图的小部件聚集在行的右侧,与绘图没有视觉关联(地图工具栏也被合并成一个) 此外,如果我将两个以上的DMAP传递给布局,我会得到一个错误: TypeError: DynamicMa

我正在尝试使用HoloView创建DynamicMap类型的绘图的网格布局(比如2x2)。 这将作为Holoviews/Bokeh应用程序使用

创建DMAP后,我使用

layout = hv.Layout([dmap1, dmap2]).cols(2)
此布局将生成两个并排的绘图 我面临的问题是,默认情况下,每个动态地图的小部件聚集在行的右侧,与绘图没有视觉关联(地图工具栏也被合并成一个)

此外,如果我将两个以上的DMAP传递给布局,我会得到一个错误:

TypeError: DynamicMap does not accept AdjointLayout type, data elements have to be a ('ViewableElement', 'NdMapping', 'Layout'). 
我正在服务器模式下使用渲染器:

renderer = hv.renderer('bokeh')
renderer = renderer.instance(mode='server')

总之,我想要一个由2个以上独立的、可控制的动态图组成的网格。

这里有很多东西需要解开,所以让我开始回答这个问题:

每个动态映射的小部件聚集在行的右侧

如果您想要独立的小部件集,那么您必须手动构建每一组小部件,并自己构建生成的bokeh模型。此示例演示了此方法:

将numpy导入为np
将全息视图导入为hv
从bokeh.io导入curdoc
从bokeh.layouts导入行
renderer=hv.renderer('bokeh')。实例(mode='server')
dmap1=hv.DynamicMap(λx:hv.Curve(np.random.rand(10)),kdims='x').redim.range(x=(0,5))
dmap2=hv.DynamicMap(λy:hv.Scatter(np.random.rand(10)),kdims='y').redim.range(x=(0,5))
widget1=renderer.get_小部件(dmap1,None,position='over')。状态
widget2=renderer.get_小部件(dmap2,None,position='over')。状态
r=行(widget1,widget2)
doc=curdoc()
添加文档根(r)
我们创建两个独立的DynamicMap,然后使用渲染器生成单独的绘图和小部件,然后使用bokeh行布局组合它们。正如您所看到的,我们还可以为小部件定义一个位置,这样它们就可以放在顶部,而不是放在右边

“地图”工具栏也可以合并为一个

在一个新的
merge\u中,添加了工具
选项,允许在单个布局中使用单独的工具栏

此外,如果我将两个以上的DMAP传递给布局,我会得到一个错误:

TypeError: DynamicMap does not accept AdjointLayout type, data elements have to be a ('ViewableElement', 'NdMapping', 'Layout'). 

这可能是由于返回了邻接对象,这在DynamicMap中是不允许的。您是否碰巧使用了
.hist
方法?如果是这样,请尝试在
DynamicMap
上调用它,而不是让
DynamicMap
返回一个带有相邻
直方图的对象

,谢谢@philippjfr给出的好答案。但是如果有多行呢?继续添加根?我在尝试创建小部件时遇到此错误:rmeans\u w=renderer.get\u小部件(rmeans,None,position='over')。state AttributeError:'BokehSelectionWidget'对象没有属性'state',更复杂的布局如何?您是否只将窗口小部件传递到行?而不是情节?Bokeh有一个布局函数,它似乎不接受hv dmaps:ValueError:只有LayoutDOM项可以插入到布局中。尝试插入::DynamicMap[Exchanges,Symbols,Window],类型>在尝试创建小部件时,我遇到此错误。是否确实使用:renderer=hv.renderer('bokeh')在“服务器”模式下创建了渲染器实例。instance(mode='server')>是否仅向行传递小部件?BokehServerWidget上的这些
.state
包含绘图和小部件的bokeh布局。如果您只需要打印,可以使用
渲染器.get_plot(dmap).state
。是的,我正在服务器模式下使用渲染器:renderer=hv.renderer('bokeh')renderer=renderer.instance(mode='server'))