My graph changes, i know this cause the Y axis changes it's limits. But the tooltip for each bar is the same, no matter if i change the daterange.
As you see, it says: "Total number of Sessions: 11,610" for the "Directo" source. This is for the entire month of Dicember. However, if i change the dates from: "2014-12-01" to "2014-12-01", to see the data just for the first day of dicember, the bars change, but the tool tip keeps saying: "Total number of Sessions: 11,610" for "Directo".
I think it is a problem with my "mysessions" function fot the tool tip part, that does not recognize the subset for the data when daterangeInput change. But cannot figure it out.
My server.R: ### You can see my data from "dput()" at the end.
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")
}
)
My 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"))
)
)
)
)
)
My data: #needed to convert using as.data.frame. Something is going on with the group_by function from dplyr.
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))
For some reason, if a custom tool_tip
function will be used as reactive, then the function must be defined outside of the reactive context. Even putting the function directly in the ggvis
code won't update with the changing data. By simply moving the mysessions
function above the reactive ggvis
plot your code will work fine.
shiny::runGist("https://gist.github.com/cdeterman/cc0e4a38863edcfea3ea")
I don't have a deep enough understand of the mechanics within shiny to explain why this is. You would probably need to go to the issues on the github page and see if someone there could explain this better if you are curious about the specific reason.