r-gvisMerge+gvisAnnotatedTimeLine公共范围选择器



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

我很确定答案是no

如果gvisMerge可以更改传递给它的googleVis对象的参数值,那么它将需要一个访问器方法和一个赋值器方法(即gettersetter),而这两个方法都没有。

更重要的是,gVisMerge纯粹是为了在一个HTML页面上放置两个googleVis对象(事实上,一次格式化两个以上的Google Vis对象需要多次递归调用gVisMerge)。

如果您查看gVisMerge方法签名

gvisMerge(x, y, horizontal = FALSE,
            tableOptions = "border="0"", 
            chartid
)

除了xy(在一个HTML页面上合并的两个googleVis对象),以及chartid,这只是为了让新的mreged googleVis物体有一个唯一的chartid,gvisMerge的参数都与格式或样式有关:

horizontal=FALSE:两个图表是并排放置还是位于下方(默认)

tableOptions:纯HTML格式(例如,通过gvisMerge设置HTML页面的背景色或页面上两个图表之间的间距)


使用gvisMerge:的而非解决方案

从googleVis构造函数创建的图表是类gvis和类列表的R对象。

gvis对象的一个组件是jsDrawChart,它将数据和适当的google可视化API函数与用户选项(googleVis函数的参数值)相结合。

因此,您希望访问和修改传递给该函数的参数,但必须在将googleVis对象(图表)传递给gvisMerge之前执行,因为一旦您调用gvisMerge,就会有一个新的gvis对象,其中原始注释的时间轴图表是其中的一个组件。

更重要的是,谷歌Vis创建的图表是在Flash中渲染的;显然,您应该在工作流程中尽早修改googleVis对象。我的猜测是,这应该不难,因为你只需要设置公共min&轴的最大值是每个图表显示的数据集。因此,只需预先计算一个常见范围

> r1 = range(d1)
> r2 = range(d2)
> r1
  [1]  0.23 .75
> r2
  [1]  0.11 0.46

将调用返回的值附加到每个AnnotatedTimeLine图表的范围中,然后为每个Annotated TimeLine调用传递这个聚合范围,这显然会给从构造函数中绘制的每个图表相同的min&给定轴上的最大值。

r12 = append(r1, r2)

相关内容

  • 没有找到相关文章