Emploi, activité, sous-emploi par secteur d’activité (sens BIT)

Data - Insee

Info

source dataset .html .qmd .RData
insee EMPLOI-BIT-TRIM [2025-08-26] https://fgee olf.com/data

Données sur l’emploi

source dataset Title Download Compile
insee EMPLOI-BIT-TRIM Emploi, activité, sous-emploi par secteur d’activité (sens BIT) 2025-08-28 [2025-08-26]
insee CHOMAGE-TRIM-NATIONAL Chômage, taux de chômage par sexe et âge (sens BIT) (1975-) 2025-08-28 [2025-08-28]
insee CNA-2014-EMPLOI Emploi intérieur, durée effective travaillée et productivité horaire 2025-08-28 [2025-08-28]
insee DEMANDES-EMPLOIS-NATIONALES Demandeurs d'emploi inscrits à Pôle Emploi 2025-08-28 [2025-08-28]
insee EMPLOI-SALARIE-TRIM-NATIONAL Estimations d'emploi salarié par secteur d'activité 2025-08-28 [2025-08-26]
insee TAUX-CHOMAGE Taux de chômage localisé 2025-08-28 [2025-08-26]
insee TCRED-EMPLOI-SALARIE-TRIM Estimations d'emploi salarié par secteur d'activité et par département 2025-08-28 [2025-08-26]

LAST_UPDATE

Code
`EMPLOI-BIT-TRIM` %>%
  group_by(LAST_UPDATE) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
LAST_UPDATE Nobs
2025-08-08 10936
2019-08-14 7920
2023-08-11 38

LAST_COMPILE

LAST_COMPILE
2025-08-28

Last

Code
`EMPLOI-BIT-TRIM` %>%
  group_by(TIME_PERIOD) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(TIME_PERIOD)) %>%
  head(1) %>%
  print_table_conditional()
TIME_PERIOD Nobs
2025-Q2 122

Sources

  • Enquête Emploi en Continu. html

  • Note méthodologique. html / pdf

  • 80000 logements.

Précision

Code
i_g("bib/insee/EEC2021_Note-methodologique-juillet-2021/precision.png")

AGE

Code
`EMPLOI-BIT-TRIM` %>%
  left_join(AGE, by = "AGE") %>%
  group_by(AGE, Age) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
AGE Age Nobs
15-24 De 15 à 24 ans 3276
50-64 De 50 à 64 ans 3276
55-64 De 55 à 64 ans 3276
25-49 De 25 à 49 ans 2808
15-64 De 15 à 64 ans 2736
00- Ensemble 1404
SO Sans objet 1248
50- 50 ans et plus 780
15-29 De 15 à 29 ans 90

INDICATEUR

Code
`EMPLOI-BIT-TRIM` %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  group_by(INDICATEUR, Indicateur) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
INDICATEUR Indicateur Nobs
CTTA15 Taux d'activité 2964
CTTE15 Taux d'emploi 2964
CTTE15_ETP Taux d'emploi en équivalent temps plein 2340
CTTE15_TC Taux d'emploi à temps complet 2340
CTTE15_TP Taux d'emploi à temps partiel 2340
CTTE15_TPE Part du temps partiel dans l'emploi 1872
CTTE15_SJ Taux d'emploi sous-jacent 1404
CTTE15_EA Espérance apparente d'activité 936
CTTE15_CDD Taux d'emploi en CDD ou intérim 156
CTTE15_CDI Taux d'emploi en CDI 156
CTTO15LA Taux de personnes en situation de sous-emploi : temps partiel, souhaitant travailler plus d'heures, disponible pour le faire et à la recherche d'un autre emploi 156
CTTO15LI Taux de personnes en situation de sous-emploi : temps partiel, souhaitant travailler plus d'heures, disponible pour le faire mais sans recherche d'un autre emploi 156
CTTO15LT Taux de personnes en situation de sous-emploi 156
CTTO15NH Taux de personnes en situation de sous-emploi : temps plein, ou temps partiel, ayant involontairement travaillé moins que d'habitude 156
CTVO15LA Nombre de personnes en situation de sous-emploi : temps partiel, souhaitant travailler plus d'heures, disponible pour le faire et à la recherche d'un autre emploi 156
CTVO15LI Nombre de personnes en situation de sous-emploi : temps partiel, souhaitant travailler plus d'heures, disponible pour le faire mais sans recherche d'un autre emploi 156
CTVO15LT Nombre total des personnes en situation de sous-emploi 156
CTVO15NH Nombre de personnes en situation de sous-emploi : temps plein, ou temps partiel, ayant involontairement travaillé moins que d'habitude 156
NEET_T_1529 Part des jeunes de 15 à 29 ans qui ne sont ni en emploi ni en formation 90
NBH_T_1564 Nombre moyen d’heures travaillées par semaine et par emploi 84

REF_AREA

Code
`EMPLOI-BIT-TRIM` %>%
  group_by(REF_AREA) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
REF_AREA Nobs
FR-D976 10974
FM 7920

NATURE

Code
`EMPLOI-BIT-TRIM` %>%
  left_join(NATURE, by = "NATURE") %>%
  group_by(NATURE, Nature) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
NATURE Nature Nobs
TAUX Taux 15288
PROPORTION Proportion 1962
VALEUR_ABSOLUE Valeur absolue 1644

SEXE

Code
`EMPLOI-BIT-TRIM` %>%
  left_join(SEXE, by = "SEXE") %>%
  group_by(SEXE, Sexe) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
SEXE Sexe Nobs
0 Ensemble 7662
1 Hommes 5616
2 Femmes 5616

TIME_PERIOD

Code
`EMPLOI-BIT-TRIM` %>%
  group_by(TIME_PERIOD) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(TIME_PERIOD)) %>%
  print_table_conditional()

Last observation

Current:

Code
`EMPLOI-BIT-TRIM` %>%
  group_by(TIME_PERIOD) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(TIME_PERIOD)) %>%
  head(1) %>%
  print_table_conditional()
TIME_PERIOD Nobs
2025-Q2 122

TITLE_FR, OBS_VALUE

Tous

Code
`EMPLOI-BIT-TRIM` %>%
  filter(TIME_PERIOD == "2021-Q3") %>%
  select(OBS_VALUE, TITLE_FR) %>%
  print_table_conditional()

Sexe = 0

Code
`EMPLOI-BIT-TRIM` %>%
  filter(TIME_PERIOD == "2021-Q3",
         SEXE == "0") %>%
  select(OBS_VALUE, TITLE_FR) %>%
  print_table_conditional()

Sexe = 0, Age = Tous

Code
`EMPLOI-BIT-TRIM` %>%
  filter(TIME_PERIOD == "2021-Q3",
         SEXE == "0",
         AGE %in% c("00-", "SO")) %>%
  select(OBS_VALUE, TITLE_FR) %>%
  print_table_conditional()
OBS_VALUE TITLE_FR
326.0 Personnes en situation de sous-emploi - Temps partiel, souhaitant travailler plus d'heures, disponible pour le faire et à la recherche d'un autre emploi (en milliers) - France hors Mayotte - Données CVS
1060.0 Personnes en situation de sous-emploi - Temps partiel, souhaitant travailler plus d'heures, disponible pour le faire mais sans recherche d'un autre emploi (en milliers) - France hors Mayotte - Données CVS
126.0 Personnes en situation de sous-emploi - Temps plein, ou temps partiel, ayant involontairement travaillé moins que d'habitude (en milliers) - France hors Mayotte - Données CVS
1512.0 Nombre total des personnes en situation de sous-emploi (en milliers) - France hors Mayotte - Données CVS
1.2 Taux de personnes en situation de sous-emploi - Temps partiel, souhaitant travailler plus d'heures, disponible pour le faire et à la recherche d'un autre emploi - France hors Mayotte - Données CVS
3.8 Taux de personnes en situation de sous-emploi - Temps partiel, souhaitant travailler plus d'heures, disponible pour le faire mais sans recherche d'un autre emploi - France hors Mayotte - Données CVS
0.4 Taux de personnes en situation de sous-emploi - Temps plein, ou temps partiel, ayant involontairement travaillé moins que d'habitude - France hors Mayotte - Données CVS
5.4 Taux des personnes en situation de sous-emploi - Ensemble - France hors Mayotte - Données CVS
56.2 Personnes actives (taux d'activité) au sens du BIT - France hors Mayotte - Données CVS
51.8 Personnes en emploi (taux d'emploi) au sens du BIT - Ensemble - France hors Mayotte - Données CVS
17.7 Part du temps partiel dans l'emploi au sens du BIT - Ensemble - France hors Mayotte - Données CVS

Toutes colonnes

Code
`EMPLOI-BIT-TRIM` %>%
  filter(TIME_PERIOD == "2021-Q3") %>%
  select_if(function(col) length(unique(col)) > 1) %>%
  select(OBS_VALUE, TITLE_FR, everything()) %>%
  select(-TITLE_EN) %>%
  print_table_conditional()

Taux à temps partiel

Tous âges

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("CTTE15_TPE"),
         REF_AREA == "FR-D976",
         AGE %in% c("00-", "SO")) %>%
  quarter_to_date() %>%
  left_join(SEXE, by = "SEXE") %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100, color = Sexe)) + 
  xlab("") + ylab("Temps partiel (%)") + theme_minimal() +
  scale_color_manual(values = c("black", "red", "blue")) +
  scale_x_date(breaks = seq(1940, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.9),
        legend.title = element_blank())

25-49

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("CTTE15_TPE"),
         REF_AREA == "FR-D976",
         AGE %in% c("25-49")) %>%
  quarter_to_date() %>%
  left_join(SEXE, by = "SEXE") %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100, color = Sexe)) + 
  xlab("") + ylab("Temps partiel (%)") + theme_minimal() +
  scale_color_manual(values = c("black", "red", "blue")) +
  scale_x_date(breaks = seq(1940, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.9),
        legend.title = element_blank())

CDD, CDI

CDD

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("CTTE15_CDD"),
         REF_AREA == "FR-D976",
         SEXE == "0") %>%
  select_if(function(col) length(unique(col)) > 1) %>%
  quarter_to_date() %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100)) + 
  xlab("") + ylab("Taux d'emploi en CDD (%)") + theme_minimal() +
  
  scale_x_date(breaks = seq(1940, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, .2),
                labels = percent_format(accuracy = .1)) +
  theme(legend.position = c(0.65, 0.92),
        legend.title = element_blank())

CDI

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("CTTE15_CDI"),
         REF_AREA == "FR-D976",
         SEXE == "0") %>%
  select_if(function(col) length(unique(col)) > 1) %>%
  quarter_to_date() %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100)) + 
  xlab("") + ylab("Taux d'emploi en CDI (%)") + theme_minimal() +
  
  scale_x_date(breaks = seq(1940, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, .2),
                labels = percent_format(accuracy = .1)) +
  theme(legend.position = c(0.65, 0.92),
        legend.title = element_blank())

Taux des personnes en situation de sous-emploi - CTTO15LT

Tous

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("CTTO15LT"),
         REF_AREA == "FR-D976",
         SEXE == "0") %>%
  select_if(function(col) length(unique(col)) > 1) %>%
  quarter_to_date() %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100)) + 
  xlab("") + ylab("Taux des personnes en situation de sous-emploi (%)") + theme_minimal() +
  
  scale_x_date(breaks = seq(1940, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.65, 0.92),
        legend.title = element_blank())

Temps partiel, souhaitant travailler plus d’heures, disponible pour le faire mais sans recherche d’un autre emploi

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("CTTO15LI"),
         REF_AREA == "FR-D976",
         SEXE == "0") %>%
  select_if(function(col) length(unique(col)) > 1) %>%
  quarter_to_date() %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100)) + 
  xlab("") + ylab("Temps partiel, souhaitant... (%)") + theme_minimal() +
  
  scale_x_date(breaks = seq(1940, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, .2),
                labels = percent_format(accuracy = .1)) +
  theme(legend.position = c(0.65, 0.92),
        legend.title = element_blank())

CTTO15NH

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("CTTO15NH"),
         REF_AREA == "FR-D976",
         SEXE == "0") %>%
  select_if(function(col) length(unique(col)) > 1) %>%
  quarter_to_date() %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100)) + 
  xlab("") + ylab("Temps partiel, souhaitant... (%)") + theme_minimal() +
  
  scale_x_date(breaks = seq(1940, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.65, 0.92),
        legend.title = element_blank())

Part des jeunes de 15 à 29 ans qui ne sont ni en emploi ni en formation - NEET_T_1529

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("NEET_T_1529"),
         REF_AREA == "FR-D976",
         SEXE == "0") %>%
  select_if(function(col) length(unique(col)) > 1) %>%
  quarter_to_date() %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100)) + 
  xlab("") + ylab("Part des jeunes de 15 à 29 ans NEET (%)") + theme_minimal() +
  
  scale_x_date(breaks = seq(1940, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.65, 0.92),
        legend.title = element_blank())

Taux d’emploi, Taux d’emploi en ETP

Tous âges

Tous

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("CTTE15", "CTTE15_TC", "CTTE15_ETP"),
         AGE %in% c("15-24"),
         REF_AREA == "FR-D976",
         SEXE == "0") %>%
  select_if(function(col) length(unique(col)) > 1) %>%
  quarter_to_date() %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  arrange(date) %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100, color = Indicateur)) + 
  xlab("") + ylab("Taux d'emploi (%)") + theme_minimal() +
  
  scale_x_date(breaks = seq(1940, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.65, 0.92),
        legend.title = element_blank())

Taux d’emploi

Tous âges

Tous

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("CTTA15", "CTTE15"),
         REF_AREA == "FR-D976",
         AGE %in% c("00-", "SO"),
         SEXE == "0") %>%
  quarter_to_date() %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100, color = Indicateur)) + 
  xlab("") + ylab("Taux d'activité, Taux d'emploi (%)") + theme_minimal() +
  
  scale_x_date(breaks = seq(1940, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.85, 0.92),
        legend.title = element_blank())

2017

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("CTTA15", "CTTE15"),
         REF_AREA == "FR-D976",
         AGE %in% c("00-", "SO"),
         SEXE == "0") %>%
  quarter_to_date() %>%
  filter(date >= as.Date("2017-01-01")) %>%
  left_join(INDICATEUR, by = "INDICATEUR") %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100, color = Indicateur)) + 
  xlab("") + ylab("Taux d'activité, Taux d'emploi (%)") + theme_minimal() +
  
  scale_x_date(breaks = seq(1940, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.85, 0.92),
        legend.title = element_blank())

Taux activité

Tous âges

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("CTTA15"),
         REF_AREA == "FR-D976",
         AGE %in% c("00-", "SO")) %>%
  quarter_to_date() %>%
  left_join(SEXE, by = "SEXE") %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100, color = Sexe)) + 
  xlab("") + ylab("Taux d'activité (%)") + theme_minimal() +
  scale_color_manual(values = c("black", "red", "blue")) +
  scale_x_date(breaks = seq(1940, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.9),
        legend.title = element_blank())

15-24

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("CTTA15"),
         REF_AREA == "FR-D976",
         AGE %in% c("15-24")) %>%
  quarter_to_date() %>%
  left_join(SEXE, by = "SEXE") %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100, color = Sexe)) + 
  xlab("") + ylab("Taux d'activité 15-24 (%)") + theme_minimal() +
  scale_color_manual(values = c("black", "red", "blue")) +
  scale_x_date(breaks = seq(1940, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.15),
        legend.title = element_blank())

15-64

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("CTTA15"),
         REF_AREA == "FR-D976",
         AGE %in% c("15-64")) %>%
  quarter_to_date() %>%
  left_join(SEXE, by = "SEXE") %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100, color = Sexe)) + 
  xlab("") + ylab("Taux d'activité 15-64 (%)") + theme_minimal() +
  scale_color_manual(values = c("black", "red", "blue")) +
  scale_x_date(breaks = seq(1940, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.15),
        legend.title = element_blank())

25-49

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("CTTA15"),
         REF_AREA == "FR-D976",
         AGE %in% c("25-49")) %>%
  quarter_to_date() %>%
  left_join(SEXE, by = "SEXE") %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100, color = Sexe)) + 
  xlab("") + ylab("Taux d'activité 25-49 (%)") + theme_minimal() +
  scale_color_manual(values = c("black", "red", "blue")) +
  scale_x_date(breaks = seq(1940, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.15),
        legend.title = element_blank())

55-64

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("CTTA15"),
         REF_AREA == "FR-D976",
         AGE %in% c("55-64")) %>%
  quarter_to_date() %>%
  left_join(SEXE, by = "SEXE") %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100, color = Sexe)) + 
  xlab("") + ylab("Taux d'activité 55-64 (%)") + theme_minimal() +
  scale_color_manual(values = c("black", "red", "blue")) +
  scale_x_date(breaks = seq(1940, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.15),
        legend.title = element_blank())

50-64

Code
`EMPLOI-BIT-TRIM` %>%
  filter(INDICATEUR %in% c("CTTA15"),
         REF_AREA == "FR-D976",
         AGE %in% c("50-64")) %>%
  quarter_to_date() %>%
  left_join(SEXE, by = "SEXE") %>%
  ggplot + geom_line(aes(x = date, y = OBS_VALUE / 100, color = Sexe)) + 
  xlab("") + ylab("Taux d'activité 50-64 (%)") + theme_minimal() +
  scale_color_manual(values = c("black", "red", "blue")) +
  scale_x_date(breaks = seq(1940, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 500, 2),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.15),
        legend.title = element_blank())