[英]R: Shiny/Ggvis - daterangeInput: Bar graph changes but Tooltip does not
我的圖形發生變化,我知道這會導致Y軸更改其極限。 但是,無論我是否更改日期范圍,每個小節的工具提示都是相同的。
如您所見,它對於“ Directo”源顯示為:“會話總數:11,610”。 這是整個Dicember的月份。 但是,如果我將日期從“ 2014-12-01”更改為“ 2014-12-01”,則僅查看二月第一天的數據,條形就會發生變化,但工具提示始終顯示:“總計會話數:“ Directo”為11,610”。
我認為工具提示部分的“ mysessions”功能存在問題,當daterangeInput更改時,無法識別數據的子集。 但無法弄清楚。
我的服務器。R:###您可以從結尾的“ dput()”中看到我的數據。
library(dplyr)
library(ggvis)
library(shiny)
Visitas_Por_Fuente <- read.csv("D:\\RCoursera\\Star- App3\\Visitas_Por_Fuente_Dic.csv") ## Call it from a CSV file, but you can see the dput() data at the end of the post.
Visitas_Por_Fuente$date <- as.Date(Visitas_Por_Fuente$date)
shinyServer(
function(input, output, session){
myData <- reactive({
# Filter the data based on user selection month
date_seq <- seq(input$dates[1], input$dates[2], by = "day")
EvolucionVisitas <- filter(Visitas_Por_Fuente, date %in% date_seq)
return(EvolucionVisitas)
})
############# Evolución de las visitas ##############################################
#####################################################################################**
myvis <- reactive({
EvolucionVisitas <- myData()
mysessions <- function(x) {
if(is.null(x)) return(NULL)
# compute the total number of sessions of the "Fuente" type that is hovered over
total_sessions <- sum(EvolucionVisitas[EvolucionVisitas$Fuentes == x$Fuentes, "sessions"])
# format the value with prettyNum if you like:
paste0("Total number of Sessions:", " ",
prettyNum(total_sessions, big.mark=",",scientific=F))
}
outvis <-
EvolucionVisitas %>%
ggvis(~Fuentes, ~sessions) %>%
layer_bars(width = 0.8, fill = ~Fuentes) %>%
add_tooltip(mysessions ,"hover")
return(outvis)
})
myvis %>% bind_shiny("EvolucionVisitas")
}
)
我的ui.R:
library(shiny)
library(ggvis)
shinyUI(
# Use a fluid Bootstrap layout
fluidPage(
# Give the page a title
br(),
br(),
titlePanel("Visitas por fuente"),
# Generate a row with a sidebar
sidebarLayout(
# Define the sidebar with one input
sidebarPanel(
dateRangeInput("dates", label = h3("Date range"),
start = "2014-12-01", end = "2014-12-31")
),
mainPanel(
tabsetPanel(
tabPanel('Evolución de las visitas',
ggvisOutput("EvolucionVisitas"))
)
)
)
)
)
我的數據:#需要使用as.data.frame進行轉換。 dplyr的group_by函數正在發生某些事情。
as.data.frame(structure(list(date = structure(c(1417410000, 1417410000, 1417410000,
1417410000, 1417410000, 1417410000, 1417496400, 1417496400, 1417496400,
1417496400, 1417496400, 1417496400, 1417496400, 1417582800, 1417582800,
1417582800, 1417582800, 1417582800, 1417582800, 1417582800, 1417669200,
1417669200, 1417669200, 1417669200, 1417669200, 1417669200, 1417669200,
1417755600, 1417755600, 1417755600, 1417755600, 1417755600, 1417755600,
1417842000, 1417842000, 1417842000, 1417842000, 1417842000, 1417842000,
1417842000, 1417928400, 1417928400, 1417928400, 1417928400, 1417928400,
1417928400, 1417928400, 1418014800, 1418014800, 1418014800, 1418014800,
1418014800, 1418014800, 1418014800, 1418101200, 1418101200, 1418101200,
1418101200, 1418101200, 1418101200, 1418101200, 1418187600, 1418187600,
1418187600, 1418187600, 1418187600, 1418187600, 1418187600, 1418274000,
1418274000, 1418274000, 1418274000, 1418274000, 1418274000, 1418274000,
1418360400, 1418360400, 1418360400, 1418360400, 1418360400, 1418360400,
1418360400, 1418446800, 1418446800, 1418446800, 1418446800, 1418446800,
1418446800, 1418446800, 1418533200, 1418533200, 1418533200, 1418533200,
1418533200, 1418533200, 1418533200, 1418619600, 1418619600, 1418619600,
1418619600, 1418619600, 1418619600, 1418619600, 1418706000, 1418706000,
1418706000, 1418706000, 1418706000, 1418706000, 1418706000, 1418792400,
1418792400, 1418792400, 1418792400, 1418792400, 1418792400, 1418792400,
1418878800, 1418878800, 1418878800, 1418878800, 1418878800, 1418878800,
1418878800, 1418965200, 1418965200, 1418965200, 1418965200, 1418965200,
1418965200, 1418965200, 1419051600, 1419051600, 1419051600, 1419051600,
1419051600, 1419051600, 1419051600, 1419138000, 1419138000, 1419138000,
1419138000, 1419138000, 1419138000, 1419224400, 1419224400, 1419224400,
1419224400, 1419224400, 1419224400, 1419224400, 1419310800, 1419310800,
1419310800, 1419310800, 1419310800, 1419310800, 1419397200, 1419397200,
1419397200, 1419397200, 1419397200, 1419397200, 1419397200, 1419483600,
1419483600, 1419483600, 1419483600, 1419483600, 1419483600, 1419483600,
1419570000, 1419570000, 1419570000, 1419570000, 1419570000, 1419570000,
1419656400, 1419656400, 1419656400, 1419656400, 1419656400, 1419656400,
1419742800, 1419742800, 1419742800, 1419742800, 1419742800, 1419742800,
1419742800, 1419829200, 1419829200, 1419829200, 1419829200, 1419829200,
1419829200, 1419915600, 1419915600, 1419915600, 1419915600, 1419915600,
1419915600, 1419915600, 1420002000, 1420002000, 1420002000, 1420002000,
1420002000), class = c("POSIXct", "POSIXt"), tzone = "America/Lima"),
Fuentes = c("Adwords", "Directo", "Email", "Referencias",
"SEO", "Social Media", "Adwords", "Campañas", "Directo",
"Email", "Referencias", "SEO", "Social Media", "Adwords",
"Campañas", "Directo", "Email", "Referencias", "SEO", "Social Media",
"Adwords", "Campañas", "Directo", "Email", "Referencias",
"SEO", "Social Media", "Campañas", "Directo", "Email", "Referencias",
"SEO", "Social Media", "Adwords", "Campañas", "Directo",
"Email", "Referencias", "SEO", "Social Media", "Adwords",
"Campañas", "Directo", "Email", "Referencias", "SEO", "Social Media",
"Adwords", "Campañas", "Directo", "Email", "Referencias",
"SEO", "Social Media", "Adwords", "Campañas", "Directo",
"Email", "Referencias", "SEO", "Social Media", "Adwords",
"Campañas", "Directo", "Email", "Referencias", "SEO", "Social Media",
"Adwords", "Campañas", "Directo", "Email", "Referencias",
"SEO", "Social Media", "Adwords", "Campañas", "Directo",
"Email", "Referencias", "SEO", "Social Media", "Adwords",
"Campañas", "Directo", "Email", "Referencias", "SEO", "Social Media",
"Adwords", "Campañas", "Directo", "Email", "Referencias",
"SEO", "Social Media", "Adwords", "Campañas", "Directo",
"Email", "Referencias", "SEO", "Social Media", "Adwords",
"Campañas", "Directo", "Email", "Referencias", "SEO", "Social Media",
"Adwords", "Campañas", "Directo", "Email", "Referencias",
"SEO", "Social Media", "Adwords", "Campañas", "Directo",
"Email", "Referencias", "SEO", "Social Media", "Adwords",
"Campañas", "Directo", "Email", "Referencias", "SEO", "Social Media",
"Adwords", "Campañas", "Directo", "Email", "Referencias",
"SEO", "Social Media", "Campañas", "Directo", "Email", "Referencias",
"SEO", "Social Media", "Adwords", "Campañas", "Directo",
"Email", "Referencias", "SEO", "Social Media", "Campañas",
"Directo", "Email", "Referencias", "SEO", "Social Media",
"Adwords", "Campañas", "Directo", "Email", "Referencias",
"SEO", "Social Media", "Adwords", "Campañas", "Directo",
"Email", "Referencias", "SEO", "Social Media", "Campañas",
"Directo", "Email", "Referencias", "SEO", "Social Media",
"Campañas", "Directo", "Email", "Referencias", "SEO", "Social Media",
"Adwords", "Campañas", "Directo", "Email", "Referencias",
"SEO", "Social Media", "Campañas", "Directo", "Email", "Referencias",
"SEO", "Social Media", "Adwords", "Campañas", "Directo",
"Email", "Referencias", "SEO", "Social Media", "Directo",
"Email", "Referencias", "SEO", "Social Media"), sessions = c(10L,
326L, 18L, 527L, 999L, 52L, 3L, 7L, 324L, 19L, 498L, 933L,
44L, 5L, 12L, 363L, 15L, 546L, 1206L, 202L, 7L, 12L, 1122L,
27L, 1249L, 5168L, 607L, 17L, 432L, 22L, 527L, 1553L, 637L,
5L, 5L, 356L, 16L, 507L, 1901L, 487L, 4L, 8L, 312L, 30L,
500L, 1622L, 370L, 3L, 11L, 341L, 18L, 504L, 1312L, 352L,
2L, 13L, 1188L, 33L, 682L, 2008L, 1508L, 3L, 15L, 1086L,
36L, 646L, 2124L, 380L, 3L, 11L, 355L, 17L, 383L, 1054L,
236L, 2L, 9L, 321L, 15L, 370L, 1118L, 245L, 7L, 9L, 259L,
13L, 332L, 1261L, 230L, 3L, 7L, 539L, 9L, 626L, 2336L, 256L,
1L, 12L, 292L, 8L, 386L, 1070L, 220L, 1L, 12L, 278L, 9L,
393L, 1129L, 22L, 1L, 16L, 521L, 18L, 665L, 2400L, 20L, 1L,
13L, 204L, 7L, 258L, 789L, 11L, 2L, 12L, 253L, 6L, 277L,
803L, 9L, 1L, 4L, 262L, 8L, 324L, 960L, 9L, 3L, 442L, 15L,
516L, 1890L, 16L, 2L, 14L, 249L, 8L, 240L, 688L, 11L, 15L,
182L, 7L, 200L, 548L, 5L, 2L, 3L, 171L, 7L, 183L, 480L, 5L,
1L, 3L, 176L, 5L, 231L, 506L, 6L, 15L, 283L, 18L, 322L, 786L,
11L, 13L, 210L, 9L, 232L, 649L, 2L, 1L, 2L, 258L, 4L, 306L,
891L, 9L, 4L, 183L, 10L, 293L, 634L, 4L, 1L, 3L, 188L, 9L,
244L, 566L, 11L, 134L, 1L, 176L, 453L, 4L)), .Names = c("date",
"Fuentes", "sessions"), row.names = c(NA, -208L), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"), vars = list(date), drop = TRUE))
出於某種原因,如果將自定義tool_tip
函數用作反應式,則必須在反應式上下文之外定義該功能。 即使將函數直接放在ggvis
代碼中,也不會隨着更改的數據而更新。 通過簡單的移動mysessions
無功上述功能ggvis
繪制你的代碼將正常工作。
shiny::runGist("https://gist.github.com/cdeterman/cc0e4a38863edcfea3ea")
我對“閃亮”中的機制沒有足夠的了解,無法解釋為什么會這樣。 您可能需要轉到github頁上的問題,如果您對特定原因感到好奇,那么看看是否有人可以更好地解釋這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.