2012-08-06 30 views
3

我正在使用gvisMerge將幾個gvisAnnotatedTimeLine對象彙集在一起​​。是否有可能所有的gvisAnnotatedTimeLine對象都使用相同的RangeSelector,即如果我在一個gvisAnnotatedTimeLine圖中選擇兩個日期/時間之間的範圍,它會自動調整合並在一起的其他圖的範圍以反映相同的範圍?gvisMerge + gvisAnnotatedTimeLine常用RangeSelector

+0

在解決類似的問題,我發現[此鏈接](http://timelyportfolio.github.io/rCharts_dygraphs/retail.html) – 2014-03-16 14:40:48

回答

3

我很確定答案是

如果gvisMerge可以改變參數值傳遞給它的googleVis對象,那麼它需要的存取方法和增變方法(即,吸氣設定器),這兩者都不具有。

更重要的是,gVisMerge純粹是爲了恰好2個 googleVis一個HTML頁面上的配售對象(其實格式化兩個以上googleVis對象同時要求多個遞歸調用gvisMerge)。

如果你看看方法簽名gVisMerge

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

除了Xÿ(兩個googleVis對象合併單個HTML頁面上),和chartid這是需要的,以便新的mreged googleVis對象具有唯一的chartid,gvisMerge的參數都與格式或樣式有關:

水平= FALSE:兩個圖表是否位於側由端或以上低於(默認)

tableOptions:純HTML格式(例如,用於設置背景色爲HTML頁或兩個圖表之間的間距通過放置在頁面上gvisMerge


溶液使用gvisMerge:

從googleVis構造器創建圖表是類的R對象gvis和類列表。一個gvis對象的

一種組分是jsDrawChart,它結合了數據及相應的谷歌可視化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) 
+0

葉,這就是我擔心答案是...我是隻是想知道是否有人提出了一種新穎的解決方案,因爲我認爲這對少數人來說是相當有用的......大概從javascript的角度來說沒有任何東西可以完成工作嗎? – 2012-08-06 07:07:58

+0

是否可以使用原始的Google圖表代碼(如http://code.google.com/apis/ajax/playground/?type=visualization)進行操作?如果是的話,你可能可以在R中創建一個自定義代碼生成器.. – nassimhddd 2012-08-06 07:17:38

+0

以及我可以提供一個解決方案,但不是通過gvisMerge;我剛纔將這個添加到我的答案中。 – doug 2012-08-06 07:18:46

相關問題