# chargement des packages de l'écosystème Shiny qui nous serons utiles library(shiny) library(flexdashboard) library(shinycssloaders) # Pour se connecter à l'API Google Trends library(gtrendsR) # Les packages pour mettre en forme les données et réaliser les graphiques ---- library(tidyverse) library(lubridate) library(tidyquant) library(plotly) library(fs) # Paramètres par défaut default_list_terms <- c("csv", "json", "rdf")
Google Trends est un outil issu de Google Labs permettant de connaître la fréquence à laquelle un terme a été tapé dans le moteur de recherche Google, avec la possibilité de visualiser ces données par région et par langue.
Afin de compléter l'analyse des besoins utilisateurs en termes de format de fichier, nous nous intéresssons aux requêtes de recherche Google effectuées par les internautes. Cette application utilise l'API Google Trends (grâce au package R gtrendsR).
shiny::selectizeInput(inputId = "search_terms", selected = default_list_terms, choices = c("csv", "api","json", "rdf", "xlsx", "xml", "excel"), label = "Les termes tapés dans une requête", multiple = TRUE) shiny::selectInput(inputId = "term_selected", label = "recherches des sujets liés au mot clé", choices = c("csv", "api","json", "rdf", "xlsx", "xml","excel"), selected = "rdf", multiple = FALSE)
gtrends_lst <-reactive({input$search_terms})
output$time_plot <- renderPlotly({ # req(gtrends_lst()) g1 <- gtrends_lst() %>% gtrends(geo = "FR", time = "today+5-y",onlyInterest = TRUE)%>% pluck("interest_over_time") %>% dplyr::mutate(hits = as.numeric(hits)) %>% as_tibble() %>% ggplot(aes(date, hits, color = keyword)) + geom_line() + geom_smooth(span = 0.3, se = FALSE) + theme_tq() + scale_color_tq() + labs(title = "Part des requêtes contenant le mot clé - évolution sur cinq ans - France") ggplotly(g1) }) plotlyOutput("time_plot")
Google Trends permet d'accéder à un échantillon, essentiellement non filtré, de requêtes de recherche réelles effectuées sur Google. Elles sont anonymes (les internautes ne sont pas identifiés personnellement), catégorisées (en fonction du sujet de la recherche) et agrégées. Il est ainsi possible d'analyser l'intérêt marqué par les internautes effectuant des recherches via Google pour un sujet particulier. L'analyse peut porter sur les internautes du monde entier, d'un état en particulier, d'une région ou encore au niveau d'une ville. Pour en savoir plus sur Google Trends
Pour rendre l'analyse entre les mots-clés plus simple, Google Trends effectue une normalisation des données de requêtes (voir détail onglet suivant).
output$time_plot_all <- renderPlotly({ #req(gtrends_lst()) g <- gtrends_lst() %>% gtrends(geo = "FR", time = "all",onlyInterest = TRUE)%>% pluck("interest_over_time") %>% dplyr::mutate(hits = as.numeric(hits)) %>% as_tibble() %>% ggplot(aes(date, hits, color = keyword)) + geom_line() + geom_smooth(span = 0.3, se = FALSE) + theme_tq() + scale_color_tq() + labs(title = "Part des requêtes par mot clé - évolution depuis 2004 - France") ggplotly(g) }) plotlyOutput("time_plot_all")
Pour rendre l'analyse entre les mots-clés plus simple, Google Trends effectue une normalisation des données de requêtes.
Les résultats de recherche sont normalisés en fonction de l'heure et du lieu d'une requête, selon le processus suivant :
Chaque point de données est divisé par le nombre total de recherches effectuées pour la période et le lieu qu'il représente, afin d'effectuer un comparatif de la popularité relative. Cela permet d'éviter que les lieux générant les volumes de recherche les plus importants soient toujours les mieux classés.
Les chiffres obtenus sont ensuite classés sur une échelle de 0 à 100, selon la proportion d'un sujet par rapport à toutes les recherches portant sur tous les sujets.
Deux régions présentant la même proportion de recherches pour un terme ne totalisent pas nécessairement le même volume de recherches.
Les données sont indexées à 100 - 100 représentant le maximum de requêtes pour la durée et la localisation selectionnées.
Pour en savoir plus sur l'exploitation des données Google Trends
renderPlotly({ # req(rv$gtrends_lst) n_terms <- 10 top_n_related_searches_tbl <- gtrends_lst() %>% gtrends(geo = "FR", time = "today+5-y") %>% pluck("related_queries") %>% as_tibble() %>% filter(related_queries == "top") %>% dplyr::mutate(interest = as.numeric(subject)) %>% select(keyword, value, interest) %>% group_by(keyword) %>% arrange(desc(interest)) %>% slice(1:n_terms) %>% ungroup() %>% mutate(value = as_factor(value) %>% fct_reorder(interest)) g <- top_n_related_searches_tbl %>% ggplot(aes(value, interest, color = keyword)) + geom_segment(aes(xend = value, yend = 0)) + geom_point() + coord_flip() + facet_wrap(~ keyword, ncol = 1, scales = "free_y") + theme_tq() + scale_color_tq()+ labs(y = " ") ggplotly(g) })
# récupérer le terme sélectionné dans le menu déroulant terme_sel <-reactive({input$term_selected})
renderPlotly({ # req(rv$gtrends_lst) n_terms <- 25 terme_gtrends_all <- terme_sel() %>%gtrends(geo = "FR", time = "all") top_n_related_topics_tbl <- terme_gtrends_all %>% pluck("related_topics") %>% as_tibble() %>% filter(related_topics == "top") %>% dplyr::mutate(interest = as.numeric(subject)) %>% select(keyword, value, interest) %>% group_by(keyword) %>% arrange(desc(interest)) %>% slice(1:n_terms) %>% ungroup() %>% mutate(value = as_factor(value) %>% fct_reorder(interest)) g_top <- top_n_related_topics_tbl %>% ggplot(aes(value, interest, color = keyword)) + geom_segment(aes(xend = value, yend = 0)) + geom_point() + coord_flip() + facet_wrap(~ keyword, ncol = 1, scales = "free_y") + theme_tq() + labs(y = " ")+ scale_color_tq() ggplotly(g_top) })
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.