r - gvisMerge + gvisAnnotatedTimeLine公共(public)RangeSelector

标签 r merge range google-visualization annotatedtimeline

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

最佳答案

我很确定答案是否定的。

如果gvisMerge可以更改传递给它的googleVis对象的参数值,那么它将需要一个accessor方法和一个mutator方法(即getter和setter),而这两个都不具有。

此外,gVisMerge纯粹是为了在单个HTML页面上恰好放置两个googleVis对象(实际上,一次格式化两个以上googleVis对象的格式需要多次递归调用gvisMerge)。

如果您查看gVisMerge的方法签名:

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


除了x和y(要在单个HTML页面上合并的两个googleVis对象)和chartid(仅需使新的googleVis对象具有唯一的chartid)外,gvisMerge的参数都与格式或样式有关:

horizo​​ntal = FALSE:两个图表是并排放置还是在下方放置(默认)

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



不使用gvisMerge的解决方案:

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

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

因此,您要访问和修改的是传递给此函数的参数,但是您必须在将googleVis对象(图表)传递给gvisMerge之前执行此操作-因为一旦调用gvisMerge,便有了一个新的gvis对象,原始的带注释的时间线图是其中的一个组成部分。

而且,由googleVis创建的图表会在Flash中呈现;显然,您应该在工作流程中尽早修改googleVis对象。我的猜测并不难,因为您需要为轴设置通用的最小值和最大值是每个图表显示的数据集。因此,只需事前计算一个通用范围:

> r1 = range(d1)
> r2 = range(d2)

> r1
  [1]  0.23 .75

> r2
  [1]  0.11 0.46


将对每个AnnotatedTimeLine图表的调用返回的值附加到范围,然后对对AnnotatedTimeLine的每次调用传入此汇总范围,这显然将使从构造函数绘制的每个图表在给定轴上具有相同的最小值和最大值。

r12 = append(r1, r2)

关于r - gvisMerge + gvisAnnotatedTimeLine公共(public)RangeSelector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11822066/

相关文章:

prolog - 斐波那契数列 - Prolog

r - 在 R 中的 geosphere 包中,为什么方位角不是 0-360 度?

r - ggplot2 - 在矩阵图中添加分割线

r - fread - 跳过以特定字符开头的行 - "#"

java - 合并重叠区间

python - 如何连接具有相同键和互补值的两行

Excel VBA - 选择动态单元格区域

c++ - 使用 C++11 随机库生成随机数

r - as_tibble 控制扁平化程度

javascript - 设置 CodeMirror Merge View + Require.js 时遇到问题