---
title: "Mon Flexdashboard"
output:
flexdashboard::flex_dashboard:
storyboard: true
social: menu
source: embed
---
```{r setup, include=FALSE}
library(DT)
library(dygraphs)
library(plotly)
library(ggplot2)
library(shiny)
library(shinyWidgets)
library(flexdashboard)
library(dplyr)
library(tidyr)
library(cluster)
library(factoextra)
library(reshape2)
library(shinythemes)
pauv <- read.csv2("pauv.csv")
pop <- read.csv2("pop.csv")
serv <- read.csv2("services_a_la_pop.csv")
scolarité <- read.csv2("scolarite.csv")
df_joint = merge(pop, pauv, by = "Libellé")
top5_pauvres <- df_joint %>%
arrange(desc(Taux.pauvreté.2021)) %>%
head(5)
top5_riches <- df_joint %>%
arrange(Taux.pauvreté.2021) %>%
head(5)
top_departements <- bind_rows(top5_pauvres, top5_riches) %>%
arrange(desc(Taux.pauvreté.2021))
top_departements <- top_departements %>%
mutate(Nombre_pauvres = round(Population.municipale.2022 * (Taux.pauvreté.2021 / 100)))
top_deps <- bind_rows(top5_pauvres, top5_riches) %>%
arrange(desc(Taux.pauvreté.2021))
df_services = merge(serv, pauv, by = "Libellé")
top5_pauvres_2 <- df_services %>%
arrange(desc(Taux.pauvreté.2021)) %>%
head(5)
top5_riches_2 <- df_services %>%
arrange(Taux.pauvreté.2021) %>%
head(5)
top_departements_2 <- bind_rows(top5_pauvres_2, top5_riches_2) %>%
arrange(desc(Taux.pauvreté.2021))
df_service = subset(top_departements_2, select = -c(Code.x))
```
Etude sur la pauvreté {.storyboard}
===
### Nombre de personnes pauvres par département
```{r}
ggplot(top_departements, aes(x = reorder(Code.y, -Nombre_pauvres), y = Nombre_pauvres, fill = Taux.pauvreté.2021)) +
geom_bar(stat = "identity") +
coord_flip() +
labs(title = "Nombre de personnes pauvres par département", x = "Département", y = "Nombre de pauvres") +
scale_fill_gradient(low = "blue", high = "red")
```
### Répartition de la pauvreté par tranche d’âge
```{r}
df_pauvrete_age <- top_departements %>%
select(Code.y, starts_with("Taux.de.pauvreté.")) %>%
pivot_longer(cols = starts_with("Taux.de.pauvreté."), names_to = "Tranche_age", values_to = "Taux")
ggplot(df_pauvrete_age, aes(x = Tranche_age, y = Taux, fill = Code.y)) +
geom_bar(stat = "identity", position = "dodge") +
coord_flip() +
labs(title = "Taux de pauvreté par tranche d'âge", x = "Tranche d'âge", y = "Taux de pauvreté (%)")
```
### Taux de pauvreté des familles monoparentales
```{r}
top_departements <- top_departements %>% arrange(desc(Taux.pauvreté.familles.monoparentales.2021))
ggplot(top_departements, aes(x = reorder(Code.y, -Taux.pauvreté.familles.monoparentales.2021),
y = Taux.pauvreté.familles.monoparentales.2021, fill = Taux.pauvreté.2021)) +
geom_bar(stat = "identity") +
coord_flip() +
labs(title = "Taux de pauvreté des familles monoparentales", x = "Département", y = "Taux de pauvreté (%)") +
scale_fill_gradient(low = "blue", high = "red")
```
### Taux de pauvreté des locataires
```{r}
top_departements <- top_departements %>% arrange(desc(Taux.pauvreté.locataires.2021))
ggplot(top_departements, aes(x = reorder(Code.y, -Taux.pauvreté.locataires.2021),
y = Taux.pauvreté.locataires.2021, fill = Taux.pauvreté.2021)) +
geom_bar(stat = "identity") +
coord_flip() +
labs(title = "Taux de pauvreté des locataires", x = "Département", y = "Taux de pauvreté (%)") +
scale_fill_gradient(low = "blue", high = "red")
```
Etude des 5 départements les plus pauvres et les plus riches sur différents aspects {.storyboard}
===
Sidebar {.sidebar}
-------------------------------------
```{r}
selectInput("dep", "Sélectionnez un département :", choices = top_deps$Libelle.x)
```
Main Content
-------------------------------------
```{r}
renderText({
paste("Vous avez sélectionné :", input$dep)
})
```
### Nombre de polices-gendarmeries, de banques et de grandes surface par département
```{r}
generer_graphique_par_libelle <- function(df, variables, titre) {
df_melt <- melt(df, id.vars = "Libellé", measure.vars = variables, variable.name = "Service", value.name = "Nombre")
ggplot(df_melt, aes(x = Libellé, y = Nombre, fill = Service)) +
geom_bar(stat = "identity", position = "dodge") +
theme_minimal() +
labs(title = titre, x = "Libellé", y = "Nombre") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
}
graph1 <- generer_graphique_par_libelle(df_service,
c("nb.Police.Gendarmerie", "nb.Banque.caisse.d.épargne", "nb.Grande.surface"),
"Nombre de services par Code : Police, Banques et Grandes surfaces")
print(graph1)
```
### Nombre d'urgences et de médecins généralistes par département
```{r}
graph2 <- generer_graphique_par_libelle(df_service,
c("nb.Urgences", "nb.Médecin.généraliste"),
"Nombre d'urgences et de médecins généralistes par Code")
print(graph2)
```
### Nombre de pharmacies et infirmiers par département
```{r}
graph3 <- generer_graphique_par_libelle(df_service,
c("nb.Pharmacie", "nb.Infirmier"),
"Nombre de pharmacies et d'infirmiers par Code")
print(graph3)
```
### Nombre de bassins de natation et de salle multisports par département
```{r}
graph4 <- generer_graphique_par_libelle(df_service,
c("nb.Bassin.de.natation", "nb.Salles.multisports.gymnases"),
"Nombre de bassins de natation et salles multisports par Code")
print(graph4)
```
### Nombre d'écoles, collèges et lycées par département
```{r}
graph5 <- generer_graphique_par_libelle(df_service,
c("nb.École.maternelle.primaire.élémentaire", "nb.Collège", "nb.Lycée"),
"Nombre d'écoles, collèges et lycées par Code")
print(graph5)
```
Identification de groupe parmi les départements {.storyboard}
===
### Clustering des départements graphique
```{r}
top10_pauvres <- df_joint %>%
arrange(desc(Taux.pauvreté.2021)) %>%
head(10)
top10_riches <- df_joint %>%
arrange(Taux.pauvreté.2021) %>%
head(10)
top_departements2 <- bind_rows(top10_pauvres, top10_riches) %>%
arrange(desc(Taux.pauvreté.2021))
top_departements2 <- top_departements2 %>%
mutate(Nombre_pauvres = round(Population.municipale.2022 * (Taux.pauvreté.2021 / 100)))
df_joint = subset(df_joint, select = -c(Code.x) )
df_joint <- df_joint %>%
mutate(across(-c(Libellé, Code.y), as.numeric))
df_joint <- na.omit(df_joint)
vars_to_normalize <- colnames(df_joint)[!colnames(df_joint) %in% c("Libellé", "Code.y")]
df_normalized <- df_joint %>%
mutate(across(all_of(vars_to_normalize), ~ (.-min(.))/(max(.)-min(.))))
set.seed(123)
km_res <- kmeans(df_normalized[, vars_to_normalize], centers = 5, nstart = 25)
df_joint$Cluster <- as.factor(km_res$cluster)
fviz_cluster(km_res, data = df_normalized[, vars_to_normalize],
geom = "point", ellipse.type = "convex",
labelsize = 5, ggtheme = theme_minimal(), xlab = NULL, ylab = NULL)
```
### Clustering des départements en dendrogramme
```{r}
top_departements2 = subset(top_departements2, select = -c(Code.x) )
top_departements2 <- top_departements2 %>%
mutate(across(-c(Libellé, Code.y), as.numeric))
top_departements2 <- na.omit(top_departements2)
vars_to_normalize <- colnames(top_departements2)[!colnames(df_joint) %in% c("Libellé", "Code.y")]
df_normalized <- top_departements2 %>%
mutate(across(all_of(vars_to_normalize), ~ (.-min(.))/(max(.)-min(.))))
hc <- hclust(dist(df_normalized[, vars_to_normalize]), method = "ward.D2")
plot(hc, labels = top_departements2$Code.y, main = "Dendrogramme des 10 pires et 10 meilleurs départements", xlab = "Départements", ylab = "Distance")
```