Get started

import library

# ETL
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(data.table)
## 
## Attachement du package : 'data.table'
## 
## Les objets suivants sont masqués depuis 'package:lubridate':
## 
##     hour, isoweek, mday, minute, month, quarter, second, wday, week,
##     yday, year
## 
## Les objets suivants sont masqués depuis 'package:dplyr':
## 
##     between, first, last
## 
## L'objet suivant est masqué depuis 'package:purrr':
## 
##     transpose
library(readr)
library(DT)
library(janitor)
## 
## Attachement du package : 'janitor'
## 
## Les objets suivants sont masqués depuis 'package:stats':
## 
##     chisq.test, fisher.test
library(lubridate)
library(magrittr)
## 
## Attachement du package : 'magrittr'
## 
## L'objet suivant est masqué depuis 'package:purrr':
## 
##     set_names
## 
## L'objet suivant est masqué depuis 'package:tidyr':
## 
##     extract
library(purrr)
library(here)
## here() starts at C:/Users/Utilisateur/Documents/EIGSI/Semestre 8/Tronc commun/VisualisationData/Projet
library(stringr)
library(dplyr)
library(tidyr)
library(ggplot2)
library(shiny)
## 
## Attachement du package : 'shiny'
## 
## Les objets suivants sont masqués depuis 'package:DT':
## 
##     dataTableOutput, renderDataTable
library(geojsonio)
## Registered S3 method overwritten by 'geojsonsf':
##   method        from   
##   print.geojson geojson
## 
## Attachement du package : 'geojsonio'
## 
## L'objet suivant est masqué depuis 'package:base':
## 
##     pretty
library(RColorBrewer)
library(sf)
## Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE
library(ggplot2)
library(sf)
library(tidyr)
library(shiny)
library(ggplot2)
library(sf)
library(dplyr)
library(tidyr)


# Charts
library(highcharter)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(plotly)
## 
## Attachement du package : 'plotly'
## 
## L'objet suivant est masqué depuis 'package:ggplot2':
## 
##     last_plot
## 
## L'objet suivant est masqué depuis 'package:stats':
## 
##     filter
## 
## L'objet suivant est masqué depuis 'package:graphics':
## 
##     layout
library(ggplot2)

library(RColorBrewer)
library(networkD3)
## 
## Attachement du package : 'networkD3'
## 
## L'objet suivant est masqué depuis 'package:highcharter':
## 
##     JS
## 
## L'objet suivant est masqué depuis 'package:DT':
## 
##     JS
library(data.tree)
library(treemap)
library(leaflet)
## 
## Attachement du package : 'leaflet'
## 
## L'objet suivant est masqué depuis 'package:networkD3':
## 
##     JS
library(car)
## Le chargement a nécessité le package : carData
## 
## Attachement du package : 'car'
## 
## L'objet suivant est masqué depuis 'package:dplyr':
## 
##     recode
## 
## L'objet suivant est masqué depuis 'package:purrr':
## 
##     some
library(colorRamps)

création tableaux entete/ data

entete = NULL
data = NULL

files_names <- list.files(here("SH_TX_metropole"))
for (i in files_names) {
      file= paste0("SH_TX_metropole/",i)
      tmp = read.csv2(file,skip =12)
      
      tmp_entete= read.csv2(file, sep = "=")
      tmp_entete= tmp_entete[c(1,2,3,4,5),1]
      tmp_entete[1] = gsub(" ", "", tmp_entete[1])
      entete = rbind(entete, c(tmp_entete, substring(i,8,9)))
      
      tmp$code = tmp_entete[1]
      data = rbind(data, tmp)
}

Mise en forme des données

entete = data.frame(entete)
names(entete) = c("code","nom", "latitude","longitude","altitude", "dep")
entete$latitude = as.numeric(entete$latitude)


#data <- data %>% separate(YYYYMM, c('YYYY', 'MM'))
data <- transform(data, Year = substr(YYYYMM, 1, 4), Month = substr(YYYYMM, 5, 6))
data <- data[,-1] # On supprime la 1eme colonne
data$Year = as.numeric(data$Year)
data$VALEUR = as.numeric(data$VALEUR) 

Visualisation et présentation des données

Moyenne des températures par année

data$Year = as.numeric(data$Year)
data$VALEUR = as.numeric(data$VALEUR) 

val_moy = NULL
val_moy <- data %>% group_by(Year, code) %>%    summarize(MOY_AN = mean(VALEUR, na.rm=TRUE))
## `summarise()` has grouped output by 'Year'. You can override using the
## `.groups` argument.
val_moy <- left_join(val_moy,entete,by=c("code"))

val_moy2 = NULL
val_moy2 <- val_moy %>% group_by(Year) %>%  summarize(MOY_AN2= mean(MOY_AN, na.rm = TRUE))

scatterplot(MOY_AN2~Year, data=val_moy2) 

val_moy3 = NULL
val_moy3 <- val_moy %>% group_by(dep,Year) %>%  summarize(MOY_AN3= mean(MOY_AN, na.rm = TRUE))
## `summarise()` has grouped output by 'dep'. You can override using the `.groups`
## argument.

Graphe des températures par départements

ggplot(val_moy3, aes(Year,MOY_AN3)) + 
    geom_line(aes(color=dep, group=dep)) 

ui <- fluidPage(
  titlePanel("Moyenne Annuelle par Département"),
  sidebarLayout(
    sidebarPanel(
      selectInput("dep", "Choisissez un département :", choices = unique(val_moy3$dep))
    ),
    mainPanel(
      plotOutput("line_plot")
    )
  )
)

Carte des températures en France (intéractive)

# Constants
MAP_CENTER_LONGITUDE <- 2.35
MAP_CENTER_LATITUDE <- 46.23
MAP_ZOOM_LEVEL <- 5

# Load map data
load_map_data <- function() {
  map_data <- st_read("georef-france-departement-millesime.geojson")
  map_data <- map_data %>%
    unnest(cols = c(reg_code, reg_name, dep_code, dep_current_code, dep_name, dep_status))
  return(map_data)
}

# Create custom color palette
create_color_palette <- function() {
  colorNumeric(
    palette = "YlOrRd",
    domain = c(9, 27)
  )
}

# Create interactive map
create_map <- function(map_data, color_palette) {
  leaflet(map_data) %>%
    addTiles() %>%
    setView(lng = MAP_CENTER_LONGITUDE, lat = MAP_CENTER_LATITUDE, zoom = MAP_ZOOM_LEVEL) %>%
    addPolygons(
      color = "#444444",
      weight = 1,
      smoothFactor = 0.5,
      fillOpacity = 0.7,
      fillColor = ~color_palette(val_moy3$MOY_AN3),
      popup = ~paste(dep_name, "<br>", "Moyenne annuelle : ", round(val_moy3$MOY_AN3, 2), "°C")
    )
}

# Load data and create interactive map
map_data <- load_map_data()
## Reading layer `georef-france-departement-millesime' from data source 
##   `C:\Users\Utilisateur\Documents\EIGSI\Semestre 8\Tronc commun\VisualisationData\Projet\georef-france-departement-millesime.geojson' 
##   using driver `GeoJSON'
## Simple feature collection with 941 features and 14 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -178.1857 ymin: -49.72161 xmax: 168.1442 ymax: 51.08899
## Geodetic CRS:  WGS 84
color_palette <- create_color_palette()
create_map(map_data, color_palette)
## Warning in color_palette(val_moy3$MOY_AN3): Some values were outside the color
## scale and will be treated as NA