我正在使用gvisMerge
汇集多个gvisAnnotatedTimeLine
个对象。是否所有gvisAnnotatedTimeLine对象都可以使用相同的RangeSelector,即如果我在一个gvisAnnotatedTimeLine
图表中选择两个日期/时间之间的范围,它随后会自动调整合并到一起的其他图形的范围反映相同的范围?
答案 0 :(得分:3)
我非常确定答案是 否 。
如果 gvisMerge 可以更改传递给它的googleVis对象的参数值,那么它需要一个访问器方法和一个mutator方法(即 getter 和一个< em> setter ),它们都没有。
更重要的是, gVisMerge 纯粹是为了在单个HTML页面上放置完全两个 googleVis对象(实际上格式化了两个以上的googleVis对象)一段时间需要多次递归调用 gvisMerge )。
如果您查看 gVisMerge 的方法签名:
gvisMerge(x, y, horizontal = FALSE,
tableOptions = "border=\"0\"",
chartid
)
除了 x 和 y (要在单个HTML页面上合并的两个googleVis对象),以及 chartid ,这只需要新的googleVis对象具有唯一的图表, gvisMerge的参数都与格式或样式有关:
horizontal = FALSE :两个图表是并排放置还是高于 - 低于(默认)
tableOptions :纯HTML格式(例如,用于设置HTML页面的背景颜色或通过 gvisMerge 设置在页面上的两个图表之间的间距)
使用gvisMerge的解决方案 :
从googleVis构造函数创建的图表是类 gvis 和类列表的R对象。
gvis对象的一个组件是 jsDrawChart ,它将数据和相应的google可视化API函数与用户选项(googleVis函数的参数值)相结合。
因此,您希望访问和修改传递给此函数的参数,但在将googleVis对象(图表)传递给 gvisMerge之前,您必须执行此操作 - 因为一旦你调用了 gvisMerge ,那么你就有了一个新的gvis对象,其中原始注释的时间线图是一个组件。
此外,googleVis创建的图表在Flash中呈现;显然你应该尽可能早地在工作流程中修改googleVis对象。我的猜测是不应该是困难的,因为所有你需要设置共同的min&amp; amp;轴的最大值是每个图表显示的数据集。因此,只需计算一个公共范围事前:
> r1 = range(d1)
> r2 = range(d2)
> r1
[1] 0.23 .75
> r2
[1] 0.11 0.46
将每个AnnotatedTimeLine图表的调用返回值附加到范围,然后在每次调用AnnotatedTimeLine时传入此聚合范围,这显然会给构造函数中的每个图表提供相同的min&amp;给定轴上的最大值。
r12 = append(r1, r2)