2015-02-08 57 views
1

這是關於ggvis的一個基本問題。我GOOGLE了,但仍然...R:ggvis - HTML功能 - 未能「add_tooltip()」

我想,當有人在特定日期(2014-12-05)盤旋,工具提示將顯示:3,188會話(請注意逗號)。在數據框上每天都這樣。

有這DF:

structure(list(date = structure(1:31, .Label = c("2014-12-01", 
"2014-12-02", "2014-12-03", "2014-12-04", "2014-12-05", "2014-12-06", 
"2014-12-07", "2014-12-08", "2014-12-09", "2014-12-10", "2014-12-11", 
"2014-12-12", "2014-12-13", "2014-12-14", "2014-12-15", "2014-12-16", 
"2014-12-17", "2014-12-18", "2014-12-19", "2014-12-20", "2014-12-21", 
"2014-12-22", "2014-12-23", "2014-12-24", "2014-12-25", "2014-12-26", 
"2014-12-27", "2014-12-28", "2014-12-29", "2014-12-30", "2014-12-31" 
), class = "factor"), sessions = c(1932L, 1828L, 2349L, 8192L, 
3188L, 3277L, 2846L, 2541L, 5434L, 4290L, 2059L, 2080L, 2111L, 
3776L, 1989L, 1844L, 3641L, 1283L, 1362L, 1568L, 2882L, 1212L, 
957L, 851L, 928L, 1435L, 1115L, 1471L, 1128L, 1022L, 768L), id = 1:31), .Names = c("date", 
"sessions", "id"), row.names = c(NA, -31L), drop = TRUE, class = c("tbl_df", 
"tbl", "data.frame")) 

,我需要得到一個谷歌Analytics(分析)查找會話:

enter image description here

1)要繪製的路徑圖,用工具提示每一天。 2)在X標籤中,只需要繪製第一個日期,中間日期和最後日期。查看我的代碼,瞭解我的失敗嘗試。

我的代碼:

EvolucionVisitas <- EvolucionVisitas %>% ggvis(~date, ~sessions) %>% 
    add_tooltip(~sessions,"hover") %>% 
    layer_paths() 

我讀過幫助頁面,但我不明白很好的論據。什麼是html功能?

錯誤說:

Warning: Unhandled error in observer: could not find function "html" 
observe({ 
    value <- session$input[[id]] 
    if (is.null(value)) 
     return() 
    if (!is.list(value$data)) 
     return() 
    df <- value$data 
    class(df) <- "data.frame" 
    attr(df, "row.names") <- .set_row_names(1L) 
    fun(data = df, location = list(x = value$pagex, y = value$pagey), 
     session = session) 
}) 

**如何在X標籤只顯示第一個,中間和最後的日期?

之後,@LyzandeR答案,我得到了我所需要的,並在工具提示中添加了「Sessions:」。但有與X標籤問題:

- 這是我試圖表明僅僅是第一,中間和數據幀的最後日期:

EvolucionVisitas %>% ggvis(x= ~date, y= ~sessions, key := ~id) %>% 
    layer_points() %>% 
    add_tooltip(mysessions ,"hover") %>% 
    layer_paths() %>% 
    add_axis("x", 
      value=c(EvolucionVisitas$date[1], EvolucionVisitas$date[round(length(EvolucionVisitas$date)/2,0)], 
        tail(EvolucionVisitas$date, n=1)), 
      properties=axis_props(
      labels=list(angle=90, fontSize = 10))) 
+0

我不知道你的意思是「用工具提示每一天「 - 你能澄清這個請嗎? – nrussell 2015-02-08 17:21:27

+0

@nrussell,當然,這是一天的會議清單。我希望如果我將鼠標懸停在「2014-12-05」上以顯示:3,188個會話(請注意「,」逗號)。等等每一天。我會將其複製到實際問題中。 – 2015-02-08 17:23:40

回答

2

如果你看到的?add_tooltip的文檔,你會看到那第二個參數必須是一個函數,因此這是你所需要的下列方式提供:

數據

df <- read.table(header=T, text=' date  sessions 
2014-12-01  1932 
2014-12-02  1828 
2014-12-03  2349 
2014-12-04  8192 
2014-12-05  3188 
2014-12-06  3277 
2014-12-07  2846 
2014-12-08  2541') 

解決方案

首先你需要提供一個ID,以便ggvis將知道如何將列鏈接的。我這樣做與下面的id柱:

df$id <- 1:nrow(df) 

然後,你需要創建函數mysessions進入add_toolbox

mysessions <- function(x) { 
    if(is.null(x)) return(NULL) 
    #notice below the id column is how ggvis can understand which session to show 
    row <- df[df$id == x$id, ] 
    #prettyNum shows the number with thousand-comma separator 
    paste0(prettyNum(row$sessions, big.mark=",",scientific=F)) 
} 

而且你這是怎麼寫的功能。請注意以下key

library(ggvis) 
df %>% ggvis(x= ~date, y= ~sessions, key := ~id) %>% 
    layer_points() %>% 
    add_tooltip(mysessions ,"hover") %>% 
    layer_paths() 

注意add_tooltiplayer_paths正常工作,所以你需要對layer_points頂部添加layer_paths。該工具提示將與layer_points一起使用。

我不能在這裏,但這裏告訴你一切是如何顯示當我將鼠標懸停我的鼠標指針懸停在第3點的快照:

enter image description here

+0

謝謝,這是一個非常好的解釋。我管理自己將「會話:」粘貼到實際的號碼上。如何,我有問題與「x」標籤。我正在尋找類似谷歌分析的東西,你只能看到幾個日期,但當你盤旋時,你可以看到每個日期點。不知道是否有必要開一個新的問題,或者你可以幫我嗎?謝謝。我會編輯我的問題,以顯示我的嘗試。 – 2015-02-09 02:45:12

+0

@LyzanderR我還注意到,有時當鼠標懸停時,我會在工具提示中看到不良信息:例如2014-12-01的信息,2014-12-07時懸停,但再次懸停修復它...一次或多次...這是對包裝的限制嗎?再次感謝。 – 2015-02-09 03:52:52

+0

HI奧馬爾。感謝您的評論和您的好話。對於你的第一個評論,你可能需要開一個新的問題,因爲我現在還不知道。我認爲這可能是可能的,但我不能沒有研究就回答。可能最好在新問題中提出。對於第二個問題,問題是,如果你將鼠標懸停在行上(即不在子彈頭上),你會看到表格的第一個值,即1932.這是一個限制,我擔心,這是因爲'add_toolbox'只能工作正確使用'layer_points'。 'ggvis'的早期我害怕:) – LyzandeR 2015-02-09 09:16:34