6

我看到了有关如何在全息视图中编辑图像或直方图等单个对象的范围(又名轴限制)的示例,例如 this answer on stack exchange for histogram extents。如果你想把它应用到更复杂的东西上,比如 NdOverlay 或 HoloMap 对象呢?本质上,我想对整个轴或图形应用限制,而不用担心我在所述轴或图形中可能拥有的每个元素。

例如,假设我有以下内容,并且想要删除轴上的抑制零:

df = pd.DataFrame({'A':[1,2,3,1,2,3],'B':[4,5,6,1,4,9],'C':['a','a','a','b','b','b']})
tbl = hv.Table(df)
fig = tbl.to.curve(kdims=['A'],vdims=['B'],mdims=['C']).overlay()
fig *= hv.Points([(3,4),(5,6),(1,3)])
fig

复杂图

将自定义绘图限制应用于像此叠加层这样的多元素对象或 HoloMap 的最佳方法是什么?我宁愿不必过滤数据,因为如果您正在结合多个数据源进行探索性工作,这可能会很麻烦。我是否需要对每个组件应用 extents 关键字,还是有一种简单的方法将其广播到整个图形?

感谢您的任何帮助。

4

1 回答 1

6

在最新版本的 HoloViews 中指定显式轴限制的最简单方法是使用xlimylim选项:

df = pd.DataFrame({'A':[1,2,3,1,2,3],'B':[4,5,6,1,4,9],'C':
['a','a','a','b','b','b']})
tbl = hv.Table(df)
fig = tbl.to.curve(kdims=['A'],vdims=['B'],mdims=['C']).overlay()
fig *= hv.Points([(3,4),(5,6),(1,3)])
fig.opts(xlim=(0, 6), ylim=(0, 10))

另一种选择(也适用于旧版本)是使用该redim方法(假设您使用的是最新的 HoloViews 开发版本)。在你的情况下,看起来像这样:

df = pd.DataFrame({'A':[1,2,3,1,2,3],'B':[4,5,6,1,4,9],'C':
['a','a','a','b','b','b']})
tbl = hv.Table(df)
fig = tbl.to.curve(kdims=['A'],vdims=['B'],mdims=['C']).overlay()
fig *= hv.Points([(3,4),(5,6),(1,3)])
fig.redim(A=dict(range=(0, 6)), B=dict(range=(0, 10)))

redim方法以递归方式迭代您的对象,并允许您以这种方式覆盖任何 Dimension 参数,包括范围。

于 2017-04-13T16:31:03.640 回答