gvisMerge + gvisAnnotatedTimeLine常见的RangeSelector

时间:2012-08-06 03:03:42

标签: r merge range google-visualization annotatedtimeline

我正在使用gvisMerge汇集多个gvisAnnotatedTimeLine个对象。是否所有gvisAnnotatedTimeLine对象都可以使用相同的RangeSelector,即如果我在一个gvisAnnotatedTimeLine图表中选择两个日期/时间之间的范围,它随后会自动调整合并到一起的其他图形的范围反映相同的范围?

1 个答案:

答案 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的参数都与格式或样式有关:

horizo​​ntal = 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)