---
title: "Révolution Française"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: scroll
source_code: embed
---
```{r setup, include=FALSE}
library(tidyverse)
library(lubridate)
library(flexdashboard)
library(plotly)
library(htmltools)
```
```{r}
# Chronologie et périodes associées
chrono <- read_csv("chronologie.csv",
# convertir en format 'date'
col_types = cols(date_debut = col_date(format = "%d/%m/%Y"),
date_fin = col_date(format = "%d/%m/%Y")))
periode <- read_csv("periode.csv",
# convertir en format 'date'
col_types = cols(date_debut = col_date(format = "%d/%m/%Y"),
date_fin = col_date(format = "%d/%m/%Y")))
# Personnages clés de chaque période ; les données sont déjà formattées au format HTML pour affichage
personnage <- read_csv("perso_images/personnage_clean_html.csv")
```
```{r}
# Reformater et préparer les textes qui vont être affichés
chrono$event <- ifelse(chrono$date_debut == chrono$date_fin,
paste0(format(chrono$date_debut, format = "%d-%b-%Y"), "\n",
str_wrap(chrono$event, width = 30, exdent = 2)),
paste0(format(chrono$date_debut, format = "%d-%b-%Y"), " - ",
format(chrono$date_fin, format = "%d-%b-%Y"), "\n",
str_wrap(chrono$event, width = 30, exdent = 2)))
periode$periode <- str_replace_all(string = periode$periode, pattern = "\\s:\\s", replacement = "\n")
periode$periode[5] <- "janvier-juin 1793\nLa Convention entre\nGirondins et Montagnards"
periode$periode[7] <- "février - juillet 1794\nLuttes de factions et\napogée de Robespierre"
```
```{r}
# groupe par période
chrono2 <- chrono %>%
group_by(id)
# dataset uniquement périodes (date de début et de fin différentes)
chrono_period <- chrono2 %>%
filter(date_debut != date_fin) %>%
mutate(date_text = floor_date(date_debut + ((date_fin - date_debut) / 2), unit = "day"))
# dataset uniquement dates (date de début et de fin identiques)
chrono_date <- chrono2 %>%
filter(date_debut == date_fin) %>%
mutate(y_decal = rep_len(x = c(250, 300), length.out = max(row_number())))
```
```{r}
# Graphe statique, fonction de la période envisagée : frise globale, périodes et dates ponctuelles
chrono_plot <- function(period) {
ggplot() +
# ajouter frise globale
geom_rect(data = chrono2 %>% filter(id == period),
aes(xmin = min(date_debut) - days(30), xmax = max(date_fin) + days(30),
ymin = 25, ymax = 200,
text = periode$periode[period]),
fill = RColorBrewer::brewer.pal(n = 9, name = "Paired")[period]) +
scale_x_date(date_breaks = "3 months", date_labels = "%b-%Y") +
scale_y_continuous(limits = c(0, 450)) +
# ajouter les périodes (rectangle) si elles sont présentes dans la frise considérée
{if(nrow(chrono_period %>% filter(id == period)) != 0)
geom_rect(data = chrono_period %>% filter(id == period),
aes(xmin = date_debut, xmax = date_fin,
ymin = 45, ymax = 180,
text = event, fill = event_type))} +
# ajouter les dates (segment + point)
geom_segment(data = chrono_date %>% filter(id == period),
aes(x = date_debut, xend = date_debut, y = 0, yend = y_decal,
color = event_type),
linetype = "dotted", size = 0.3) +
geom_point(data = chrono_date %>% filter(id == period),
aes(x = date_debut, y = y_decal,
text = event, shape = event_type, color = event_type, fill = event_type),
size = 5) +
scale_shape_manual(values = c(13, 23)) +
scale_fill_brewer(palette = "Dark2") +
scale_color_brewer(palette = "Dark2") +
# modifier theme et titres
labs(title = periode$periode[period], x = "", y = "") +
theme(legend.position = "none"
, axis.text.y = element_blank()
, axis.ticks.y = element_blank()
, panel.grid = element_blank()
, panel.background = element_blank()
, plot.title = element_text(hjust = 0.5)
)
}
# Graphe dynamique
chrono_plotly <- function(period) {
ggplotly(chrono_plot(period), tooltip = "text") %>%
# Ajouter un axe fléché pour les dates
layout(annotations = list(
list(
x = 1,
y = 0.045,
showarrow = TRUE,
xref = "paper",
yref = "paper",
arrowhead = 2,
arrowsize = 1.5,
ax = -5000,
ay = 0
)))
}
```
```{r}
# tableau des personnages clés
perso_cle <- function(periode) {
personnage %>%
filter(id == periode) %>%
select(image_link, personnage, fonction) %>%
t() %>%
htmlTable::htmlTable(rnames = FALSE, css.cell = "padding:2px")
}
```
Chronologie Générale
=======================================================================
Row
-----------------------------------------------------------------------
### Chronologie {.no-title}
```{r fig.width=15, fig.height=10}
periode %>%
mutate(date_mid = floor_date(date_debut + ((date_fin - date_debut) / 2), unit = "day"),
y_decal = c(600, 1000, 1400, 600, 1000, 1400, 1800, 600, 1000)
) %>%
ggplot() +
geom_rect(aes(xmin = date_debut, xmax = date_fin,
ymin = 25, ymax = 400,
fill = as.factor(id))) +
geom_segment(aes(x = min(date_debut) - days(120), xend = max(date_fin) + days(120),
y = 25, yend = 25),
size = 0.5,
arrow = arrow(length = unit(0.02, "npc"), type = "closed")) +
scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
coord_fixed() +
geom_segment(aes(x = date_mid, xend = date_mid, y = 400, yend = y_decal, color = as.factor(id)),
linetype = "longdash", size = 0.2) +
geom_label(aes(x = date_mid, y = y_decal, label = periode, fill = as.factor(id)), size = 4) +
scale_y_continuous(limits = c(0, 2000), expand = c(0, 0)) +
scale_fill_brewer(palette = "Paired") +
scale_color_brewer(palette = "Paired") +
labs(x = "", y = "",
title = "Révolution Française - Chronologie des évènements",
caption = "Source : https://venividisensivvs.wordpress.com/les-articles-en-pdf/la-revolution-francaise/chronologie-de-la-revolution-francaise/") +
theme(legend.position = "none"
, axis.text.y = element_blank()
, axis.ticks.y = element_blank()
, panel.grid = element_blank()
, panel.background = element_blank()
, plot.title = element_text(hjust = 0.5)
, plot.caption = element_text(face = "italic")
)
```
1787-1789 : La marche à la Révolution {data-navmenu="Chronologie Détaillée"}
=======================================================================
Row {data-height=700}
-----------------------------------------------------------------------
### Chrono Plot {.no-title}
```{r}
chrono_plotly(period = 1)
```
Row
-----------------------------------------------------------------------
### Personnages Clés
```{r}
perso_cle(period = 1)
```
Été 1789 : Le basculement {data-navmenu="Chronologie Détaillée"}
=======================================================================
Row {data-height=700}
-----------------------------------------------------------------------
### Chrono Plot {.no-title}
```{r}
chrono_plotly(period = 2)
```
Row
-----------------------------------------------------------------------
### Personnages Clés
```{r}
perso_cle(period = 2)
```
1789-1791 : Le travail de la Constituante {data-navmenu="Chronologie Détaillée"}
=======================================================================
Row {data-height=700}
-----------------------------------------------------------------------
### Chrono Plot {.no-title}
```{r}
chrono_plotly(period = 3)
```
Row
-----------------------------------------------------------------------
### Personnages Clés
```{r}
perso_cle(period = 3)
```
1791-1793 : La chute de la Monarchie {data-navmenu="Chronologie Détaillée"}
=======================================================================
Row {data-height=700}
-----------------------------------------------------------------------
### Chrono Plot {.no-title}
```{r}
chrono_plotly(period = 4)
```
Row
-----------------------------------------------------------------------
### Personnages Clés
```{r}
perso_cle(period = 4)
```
janvier-juin 1793 : La Convention entre Girondins et Montagnards {data-navmenu="Chronologie Détaillée"}
=======================================================================
Row {data-height=700}
-----------------------------------------------------------------------
### Chrono Plot {.no-title}
```{r}
chrono_plotly(period = 5)
```
Row
-----------------------------------------------------------------------
### Personnages Clés
```{r}
perso_cle(period = 5)
```
juillet 1793 - janvier 1794 : La Terreur à l’ordre du jour ? {data-navmenu="Chronologie Détaillée"}
=======================================================================
Row {data-height=700}
-----------------------------------------------------------------------
### Chrono Plot {.no-title}
```{r}
chrono_plotly(period = 6)
```
Row
-----------------------------------------------------------------------
### Personnages Clés
```{r}
perso_cle(period = 6)
```
février - juillet 1794 : Luttes de factions et apogée de Robespierre {data-navmenu="Chronologie Détaillée"}
=======================================================================
Row {data-height=700}
-----------------------------------------------------------------------
### Chrono Plot {.no-title}
```{r}
chrono_plotly(period = 7)
```
Row
-----------------------------------------------------------------------
### Personnages Clés
```{r}
perso_cle(period = 7)
```
août 1794 - octobre 1795 : Changement de direction {data-navmenu="Chronologie Détaillée"}
=======================================================================
Row {data-height=700}
-----------------------------------------------------------------------
### Chrono Plot {.no-title}
```{r}
chrono_plotly(period = 8)
```
Row
-----------------------------------------------------------------------
### Personnages Clés
```{r}
perso_cle(period = 8)
```
octobre 1795 - novembre 1799 : Le Directoire {data-navmenu="Chronologie Détaillée"}
=======================================================================
Row {data-height=700}
-----------------------------------------------------------------------
### Chrono Plot {.no-title}
```{r}
chrono_plotly(period = 9)
```
Row
-----------------------------------------------------------------------
### Personnages Clés
```{r}
perso_cle(period = 9)
```