---
title: "Statistiques production HAL pour l'HCERES"
format:
html:
self-contained: true # pour enregistrer le document sans les dossiers etc
smooth-scroll: true
sidebar: false
# sidebar-width: 0px
# margin-width: 450px
# body-width: screen
number-sections: true
number-offset: 0
number-depth: 10
highlight-style: github
code-fold: true
code-tools: true
toc-depth: 12
page-layout: full
toc: true
toc-location: right
execute:
warning: false
message: false
# toc-fold: true
# column: screen # pour avoir toutes les figures sur la largeur de la page
# fig-width: 50x
# fig-height: 500x
fig-dpi: 150
editor: visual
---
```{r,message=FALSE,echo=FALSE}
require(renv)
# renv::init()
require(sf)
require(dplyr)
require(mapview)
require(readr)
require(ggplot2)
# require(tidyr)
require(stringr)
require(jsonlite)
# require(IDEES)
require(downloadthis)
require(DT)
require(plotly)
require(leaflet)
require(deeptime) # les facettes de couleur
require(ggrepel)
require(rmarkdown)
require(knitr)
require(svglite)
mapviewOptions(basemaps = c("Esri.WorldStreetMap","OpenStreetMap","Esri.WorldImagery"))
# setwd("~/Documents/r_script/hceres")
paper=read_csv("data/all_paper_umr_20260717.csv")
# list.files("data")
```
# Les membres de l'UMR IDEES par champs
## Les membres de l'UMR
```{r}
umr_simple=read_csv("data/personnel_umr_lite.csv") %>%
filter(axe1 !="Appui")
umr_autre=umr_simple %>% filter(is.na(sous_champ))
paper_autre=paper %>%
inner_join(umr_autre) %>%
count(nom_simple) %>%
arrange(desc(n)) %>%
pull(nom_simple)
# au moins une publi
umr_simple=umr_simple %>%
filter(!is.na(sous_champ)) %>%
bind_rows(
umr_simple %>% filter(nom_simple %in% paper_autre)
) %>%
distinct()
# repartition des champs
umr_simple=umr_simple %>% mutate(sous_champ=ifelse(is.na(sous_champ),"A",sous_champ))%>%
mutate(sous_champ1=str_split_i(sous_champ,";",1) %>% unlist() %>% str_trim(),
sous_champ2=str_split_i(sous_champ,";",2) %>% unlist() %>% str_trim()) %>%
mutate(champ1=substr(sous_champ1,stop = 1,start = 0),
champ2=substr(sous_champ2,stop = 1,start = 0))
DT::datatable(umr_simple,options=list(pageLength = 5))
```
A noter la présence d'une variable "nom_simple", qui consiste en la première lettre du prenom et le nom complet, en minuscule. Il servira de jointure avec les identifiants hal, mais ceci fera l'objet d'un document ultérieur.
## Les champs et sous champs de l'UMR
```{r}
rosette_champs=data.frame(
champs=c("R","M","G","D","P","A"),
label_champs=c("Risque","Modélisation",
"Géo-archéologie",
"Dynamiques et transition des territoires",
"Recherche portuaire et maritime",
"Autre")) %>%
mutate(label_champs=factor(label_champs,levels=label_champs))
rosette_champs_long=
data.frame(
sous_champ_num=c("R1","R2","R3","R4",
"M1","M2","M3",
"G1","G2",
"D1","D2","D3",
"P1","P2",
"A"
),
sous_champ_long=c(
"Risques et populations",
"Santé environnement",
"Adaptation au changement climatique (Ville & Agriculture)",
"Vulnérabilités & adaptation des espaces côtiers",
"Dynamiques et aménités environnementales de la parcelle au bassin versant" ,
"Développement de modèles statistiques complexes pour l'analyse de phénomènes géographiques",
"Modélisation lois d'échelles urbaines",
"Analyse spatiale de la circulation des archéomatériaux",
"Reconstitution des paysages et environnements du passé",
"Analyse géographique des transitions territoriales (acteurs, discours, diagnostics et processus)",
"Dynamiques de population",
"Transition numérique",
"Dynamiques maritimes et portuaires",
"Histoire Maritime et Portuaire",
"Autre"
),
sous_champ=c(
"Risques et populations",
"Santé environnement",
"Adaptation au changement climatique",
"Vulnérabilités & adaptation\ndes espaces côtiers",
"Dynamiques et aménités environnementales\nde la parcelle au bassin versant" ,
"Modèles statistiques complexes\npour l'analyse de phénomènes géographiques",
"Modélisation lois d'échelles urbaines",
"Analyse spatiale de la\ncirculation des archéomatériaux",
"Reconstitution des paysages\net environnements du passé",
"Analyse géographique\ndes transitions territoriales",
"Dynamiques de population",
"Transition numérique",
"Dynamiques maritimes et portuaires",
"Histoire Maritime et Portuaire",
"Autre"
),
champ=c(
rep("Risque",4),
rep("Modélisation",3),
rep("Géo-archéologie",2),
rep("Dynamiques et transition des territoires",3),
rep("Recherche portuaire et maritime",2),
"Autre"
)) %>%
mutate(champ=factor(champ,levels=unique(champ))) %>%
mutate(champs_num=substr(x = sous_champ_num,0,1))
DT::datatable(rosette_champs_long,options=list(pageLength = 5))
```
## Répartition des effectifs par champs
Ici nous avons fait le choix de comptabiliser les personnes inscrites dans plusieurs champs, soit `r nrow(umr_simple %>% filter(!is.na(champ2)))` personnes.
```{r}
sous_champ=umr_simple %>%
# mutate()
count(sous_champ1) %>%
rename(sous_champ_num=sous_champ1) %>%
bind_rows(
umr_simple %>%
count(sous_champ2) %>%
rename(sous_champ_num=sous_champ2)
) %>%
group_by(sous_champ_num) %>%
summarise(n=sum(n)) %>%
ungroup() %>%
inner_join(rosette_champs_long,by=c("sous_champ_num"="sous_champ_num")) %>%
mutate(sous_champ_fact=factor(sous_champ,levels=rosette_champs_long$sous_champ)) %>% mutate(sous_champ=gsub("\n","",sous_champ)) %>%
filter(!is.na(sous_champ_num))
sous_champ=sous_champ %>%
mutate(nb_tot=sum(n)) %>%
mutate(nb_tot2=nb_tot-n[sous_champ_num=="A"]) %>%
group_by(champ) %>%
mutate(nb_champ=sum(n)) %>%
ungroup() %>%
mutate(pc_sous_champs=round(100*n/nb_champ)) %>%
mutate(pc_champ_all=round(100*nb_champ/nb_tot),
pc_champ=round(100*nb_champ/nb_tot2))
# mutate(n2=sum(n[sous_champ_num!="A"],na.rm=TRUE))
pal=c(RColorBrewer::brewer.pal(5,"Set1"),"Yellow")
names(pal)=rosette_champs$label_champs
champ_stat=sous_champ %>%
dplyr::select(champ,nb_champ,pc_champ,pc_champ_all) %>%
distinct()
fun_plot_champ=function(x){
x %>%
ggplot(aes(x=""))+
geom_col(aes(fill=reorder(champ,-pos),y=nb_champ),
stat="identity")+
geom_text(aes(label=label,y=pos))+
# coord_polar()+
coord_polar("y",start=0)+
scale_fill_manual(values=pal,name="Champs")+
theme_bw(base_size = 10)+
xlab("")+
ylab("")
}
```
::: panel-tabset
### Avec le personnel "hors champs"
```{r}
champ_stat %>%
arrange(nb_champ) %>%
mutate(pos=cumsum(nb_champ)-nb_champ/2) %>%
mutate(label=paste0(pc_champ_all,"% / n=",nb_champ)) %>%
fun_plot_champ()
ggsave("figures/fig_1.svg",device = svglite::svglite)
```
```{r}
champ_stat%>% dplyr::select(-pc_champ) %>%
# filter(champs != "Autre") %>%
download_this(
output_name = "stat_champ_all",
output_extension = ".csv",
button_label = "Télécharger la base de données (CSV)",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
### sans le personnel "hors champs"
```{r}
champ_stat %>%
filter(champ != "Autre") %>%
arrange(nb_champ) %>%
mutate(pos=cumsum(nb_champ)-nb_champ/2) %>%
mutate(label=paste0(pc_champ,"% / n=",nb_champ)) %>%
fun_plot_champ()
ggsave("figures/fig_2.svg",device = svglite::svglite)
```
```{r}
champ_stat%>%
filter(champ != "Autre") %>%
dplyr::select(-pc_champ_all) %>%
download_this(
output_name = "stat_champ",
output_extension = ".csv",
button_label = "Télécharger la base de données (CSV)",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
:::
## Répartition des effectifs par champs & sous champs
```{r}
sous_champ2=sous_champ %>%
dplyr::select(-nb_tot2) %>%
filter(!is.na(sous_champ)) %>%
filter(champ != "Autre") %>%
mutate(nb_tot=sum(n)) %>%
group_by(champ) %>%
mutate(nb_champ=sum(n)) %>%
ungroup() %>%
mutate(pc_sous_champs=round(100*n/nb_champ)) %>%
mutate(pc_champ=round(100*nb_champ/nb_tot))
```
```{r}
#| fig-width: 9
#| fig-height: 9
sous_champ2 %>%
ggplot()+
geom_col(aes(x=sous_champ_fact,y=n,fill=champ))+
geom_text(aes(x=sous_champ_fact,y=n,label=n))+
scale_fill_manual(values =pal,name="Champs")+
ylab("Effectif")+
xlab("Sous Champs")+
theme_bw(base_size=15)+
theme(axis.text.x = element_text(angle=45,hjust=1,vjust=1),
legend.position = c(0.25,0.7),
plot.margin = margin(l=80,b=100))
ggsave("figures/fig_3.svg",device = svglite::svglite)
```
```{r}
sous_champ2 %>%
dplyr::select(
champ,
sous_champ_num,
sous_champ_long,
n,
nb_champ,
pc_champ,
pc_champ_all,
pc_sous_champs
) %>%
arrange(champ,sous_champ_num) %>%
download_this(
output_name = "stat_sous_champ_all",
output_extension = ".csv",
button_label = "Télécharger la base de données (CSV ;)",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
# Généralités sur les productions de l'UMR
## Les données en entrée
```{r}
# les papiers
paper=read_csv("data/all_paper_umr_20260717.csv")
rosette=read_csv("data/rosette_hal_formid_nom.csv")
```
La base HAL de l'UMR au 17/07/2026 contient `r nrow(paper)` Documents, pour `r length(unique(paper$nom_simple))` auteurs.
```{r}
DT::datatable(paper,options=list(pageLength = 5))
paper %>%
download_this(
output_name = "all_paper_umr_20260717",
output_extension = ".csv",
button_label = "Télécharger la base HAL (CSV ;)",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
Comme on peut le voir ici, il y aussi une colonne *nom_simple*. Il s'agit d'un identifiant unique pour toutes les personnes dans la base des productions de l'UMR, qu'elles soient membre ou non du Labo. Si vous ouvrez le code plus haut, un fichier *rosette* a également été chargé. Il permet de faire le lien entre les différents identifiants *hal* et l'identifiant unique *nom_simple*.
Juste pour vous montrer, vous trouverez ci-dessous un échantillon ici pris aléatoirement de membres du labo entre 2020 et 2025, avec plusieurs identifiant **hal**. C'était un casse tête à gérer.
::: panel-tabset
### Quelques exemples de doublons
```{r}
sample_people=rosette %>% count(nom_simple) %>%
filter(nom_simple %in% umr_simple$nom_simple) %>%
arrange(desc(n)) %>%
filter(n>3) %>% pull(nom_simple) %>% sample(3)
rosette %>%
filter(nom_simple %in% sample_people) %>%
arrange(nom_simple) %>%
datatable(options=list(pageLength = nrow(.)))
```
### Identifiants avec doublons
```{r}
rosette %>% count(nom_simple,name = "Nombre d'identifiants") %>%
arrange(desc(`Nombre d'identifiants`))%>%
datatable(options=list(pageLength = 5))
```
:::
## Production sur la période 2020-2026
```{r}
url_doc="https://api.archives-ouvertes.fr/ref/doctype"
type_doc=fromJSON(url_doc)
type_doc=type_doc$response$result$doc$str
type_doc=do.call("rbind.data.frame",type_doc) %>%
setNames(c("docType_s","type"))
paper_type=paper %>%
dplyr::select(halId_s,docType_s) %>%
distinct()
count_type=paper_type %>%
count(docType_s) %>%
left_join(type_doc) %>%
arrange(desc(n)) %>%
mutate(type=ifelse(n<10,"Autre",type)) %>%
mutate(type=ifelse(docType_s=="OTHER","Autre",type)) %>%
mutate(type=ifelse(docType_s=="COMM" |
docType_s=="POSTER" |
docType_s =="PROCEEDINGS","Communication/Poster",
type)) %>%
mutate(type2=gsub(x = type,"[/]","\n"))%>%
mutate(type2=gsub(x = type2,",","\n")) %>%
mutate(type2=gsub(x = type2," ou","\nou"))
```
::: panel-tabset
### Production totale
```{r}
#| fig-width: 7
#| fig-height: 7
count_type %>%
group_by(type) %>%
summarise(n=sum(n)) %>%
arrange(desc(n)) %>%
ggplot(aes(x=reorder(type,n),y=n))+
geom_col()+
geom_label(aes(label=n))+
theme_bw(base_size=12)+
theme(axis.text.x = element_text(angle=45,hjust=1))+
xlab("")+
ylab("Nombre de production")
ggsave("figures/fig_4.svg",device = svglite::svglite)
count_type %>%
dplyr::select(-type2) %>%
download_this(
output_name = "labo_production",
output_extension = ".csv",
button_label = "Télécharger la base HAL (CSV ;)",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
### Production par champs
Ici on ne va prendre que le premier champs de chaque membre du labo. Si deux personnes d'un même champs ont publié ensemble, cette publi vaudra 1 dans le champs. Si ces personnes sont d'un champs différent, chaque champs aura +1.
```{r}
paper_champ=paper %>%
dplyr::select(halId_s,nom_simple,producedDateY_i,docType_s) %>%
inner_join(umr_simple,by="nom_simple")
count_type_champ=paper_champ %>%
dplyr::select(halId_s,champ1,docType_s) %>%
distinct() %>%
count(champ1,docType_s) %>%
inner_join(count_type %>% dplyr::select(-n),by="docType_s") %>%
inner_join(rosette_champs,by=c("champ1"="champs"))
tot_publi_champ=count_type_champ %>%
group_by(label_champs) %>%
summarise(nb=sum(n))
```
```{r}
#| fig-width: 9
#| fig-height: 14
count_type_champ %>%
group_by(type,label_champs) %>%
summarise(n=sum(n)) %>%
arrange(desc(n)) %>%
ggplot(aes(x=reorder(type,n),y=n))+
geom_col()+
geom_label(aes(label=n))+
theme_bw(base_size=16)+
theme(axis.text.x = element_text(angle=45,hjust=1))+
geom_text(data=tot_publi_champ,
aes(x=-Inf,y=Inf,label=paste0("Total=",nb)),
hjust = -1,
vjust=3)+
# vjust=0)+
xlab("")+
ylab("Nombre de production")+
facet_wrap(~label_champs,scale="free_y",ncol=2)
ggsave("figures/fig_5.svg",device = svglite::svglite)
count_type_champ %>%
dplyr::select(-type2) %>%
download_this(
output_name = "labo_production_champs",
output_extension = ".csv",
button_label = "Télécharger la base HAL (CSV ;)",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
### Production des personnes hors champs
```{r}
people_hors_champs=paper_champ %>% filter(champ1=="A") %>% left_join(type_doc)
people_hors_champs %>% count(nom_simple) %>% arrange(desc(n)) %>%
datatable(options=list(pageLength = 5))
people_hors_champs %>% count(type,nom_simple) %>% arrange(desc(n)) %>%
group_by(nom_simple) %>%
mutate(tot=sum(n)) %>%
ungroup() %>%
ggplot()+
geom_col(aes(x=reorder(nom_simple,tot),y=n,fill=type))+
theme_bw()+
# scale_fill_brewer(palette="Set2")+
theme(axis.text.x = element_text(angle=45,hjust=1))
ggsave("figures/fig_6.svg",device = svglite::svglite)
```
:::
## Les co-auteurs
```{r}
sel_type=count_type %>%
group_by(type) %>%
summarise(nb=sum(n))%>%
filter(nb>100) %>% pull(type)
count_type2=count_type %>% filter(type %in% sel_type) %>%
dplyr::select(-n)
nb_coauth=paper %>% count(halId_s,name="nb_coauth")
nb_coauth_champ=paper %>%
dplyr::select(halId_s,nom_simple,docType_s) %>%
inner_join(nb_coauth) %>% # nombre de coauteurs par articles
inner_join(umr_simple %>% dplyr::select(nom_simple,champ1),
by="nom_simple") %>% # on récupère les champs
left_join(rosette_champs,by=c("champ1"="champs"))%>%
dplyr::select(-nom_simple) %>%
distinct()
nb_coauth_champ_article=nb_coauth_champ %>%
inner_join(count_type2,by="docType_s")
stat_coauth_champs_art=nb_coauth_champ_article %>%
group_by(label_champs,type) %>%
summarise(nb_prod=n(),
mean=mean(nb_coauth),
median=median(nb_coauth),
sd=sd(nb_coauth),
min=min(nb_coauth),
max=max(nb_coauth)) %>%
ungroup()
stat_coauth_champ=nb_coauth_champ %>%
group_by(label_champs) %>%
summarise(nb_prod=n(),
mean=mean(nb_coauth),
median=median(nb_coauth),
sd=sd(nb_coauth),
min=min(nb_coauth),
max=max(nb_coauth)) %>%
ungroup()
```
::: panel-tabset
### Co-auteurs par champs / type de production (1)
```{r}
#| fig-width: 9
#| fig-height: 7
# summarise(nb=sum(n))
nb_coauth_champ_article %>%
ggplot(aes(y=nb_coauth,x=type))+
geom_boxplot(aes(fill=type),outliers = FALSE)+
facet_wrap(~label_champs,scale="free_y")+
ggtitle("nombre de co-auteurs")+
ylab("Nombre de co-auteurs")+
xlab("")+
theme_bw(base_size = 14)+
theme(axis.text.x = element_text(angle=45,hjust=1),
legend.position="bottom",
legend.direction = "horizontal")
ggsave("figures/fig_7.svg",device = svglite::svglite)
```
### Co-auteurs par champs / type de production (2)
```{r}
#| fig-width: 9
#| fig-height: 6
#|
nb_coauth_champ_article %>%
ggplot(aes(y=nb_coauth,x=label_champs))+
geom_boxplot(aes(fill=label_champs),outliers = FALSE)+
facet_wrap(~type,scale="free_y")+
ggtitle("nombre de co-auteurs par type de document")+
theme_bw(base_size = 16)+
theme(legend.position = "none",
axis.text.x = element_text(angle=45,hjust=1))+
ylab("Nombre de coauteurs")+
xlab("")
ggsave("figures/fig_8.svg",device = svglite::svglite)
```
:::
```{r}
stat_coauth_champ %>%
# dplyr::select(-type2) %>%
download_this(
output_name = "stat_production_champs",
output_extension = ".csv",
button_label = "stats auteurs par champs",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
stat_coauth_champs_art %>%
# dplyr::select(-type2) %>%
download_this(
output_name = "stat_production_champs_prod",
output_extension = ".csv",
button_label = "stats auteurs par champs & type de production",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
# Les principales revues
::: panel-tabset
## General
```{r}
#| fig-width: 9
#| fig-height: 12
journal=read_csv("data/journal_ART_ISSUE_info.csv") %>%
mutate(nom_cours=str_split_i(journalTitle_s,":",1) %>% unlist() %>%
str_trim()) %>%
mutate(nom_cours=gsub("[/]","\n",nom_cours) %>% unlist() %>%
str_trim()) %>%
mutate(nom_cours=ifelse(grepl("TransNav",nom_cours),"TransNav",nom_cours)) %>%
mutate(nom_cours=gsub("International","Int.",nom_cours))
main_paper=paper %>%
dplyr::select(halId_s,nom_simple) %>%distinct() %>%
filter(nom_simple %in% umr_simple$nom_simple) %>%
dplyr::select(halId_s) %>% distinct() %>%
inner_join(journal %>% dplyr::select(halId_s,nom_cours)) %>%
count(nom_cours) %>%
arrange(desc(n))
p_tmp=main_paper %>%
slice(1:50) %>%
ggplot()+
geom_col(aes(y=reorder(nom_cours,n),x=n))+
theme_bw()+
# theme(axis.text.x = element_text(angle=45,hjust=1))+
ggtitle("les 50 principales revues")+
xlab("Revues")+
ylab("Nombre de publis")
ggplotly(p_tmp)
ggsave("figures/fig_9.svg",device = svglite::svglite)
main_paper %>%
slice(1:100) %>%
# dplyr::select(-type2) %>%
download_this(
output_name = "main_acl",
output_extension = ".csv",
button_label = "les 100 principales revues",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
#
```
## Par champs
On ne prend que le champs principal. Si plusieurs personnes sont du même champs dans une revue, ils comptent pour un seul.
```{r}
#| fig-width: 9
#| fig-height: 16
hal_champ=paper %>%
dplyr::select(halId_s,nom_simple) %>%
inner_join(umr_simple %>% dplyr::select(nom_simple,champ1)) %>%
inner_join(rosette_champs,by=c("champ1"="champs")) %>%
dplyr::select(halId_s,label_champs) %>%
distinct()
# count(halId_s,label_champs)
# journal %>%
# filter(nom_cours=="Geomorphology") %>%
# dplyr::select(halId_s) %>%
# inner_join(paper) %>%
# inner_join(umr_simple) %>%
# filter(champ1=="A")
acl_champs_stat=hal_champ %>%
inner_join(journal %>% dplyr::select(halId_s,nom_cours)) %>%
count(label_champs,nom_cours) %>%
arrange(desc(n))
main_acl_champs_stat=acl_champs_stat %>%
# filter(n>2) %>%
group_by(label_champs) %>%
arrange(desc(n)) %>%
slice(1:10) %>%
ungroup()
main_acl_champs_stat %>%
ggplot()+
geom_col(aes(x=reorder(nom_cours,n),y=n))+
facet_wrap_color(vars(label_champs),nrow=3,ncol=2,#lab_colors="auto",
colors=pal,scale="free") +
theme_bw()+
theme(axis.text.x = element_text(angle=45,hjust=1))+
ggtitle("les 10 principales revues par champs")+
xlab("Revues")+
ylab("Nombre de publis")
ggsave("figures/fig_10.svg",device = svglite::svglite)
main_acl_champs_stat %>%
# dplyr::select(-type2) %>%
download_this(
output_name = "main_acl_champs",
output_extension = ".csv",
button_label = "les 10 principales revues par champs",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
:::
# Les productions inter-labo
## préambule
Des publications hal, nous avons récupéré la *"facet"* avec le numéro du labo de chaque co-auteur. Bien entendu, ce dernier n'est pas forcément renseigné. Néanmoins, on a ensuite interrogé l'API HAL : *https://api.archives-ouvertes.fr/ref/structure/?q=\[id_labo\]&fl=name_s,address_s,country_s,ror_s,docid,acronym_s* pour obtenir quelques infos sur les labos, notamment leur nom et sigle, et bien entendu des infos sur la géolocalisation (l’adresse, le pays et le lien vers le RoR)
```{r}
labo=read_csv("data/info_all_lab_structure.csv") %>%
filter(!is.na(country_s)) %>%
mutate(labo_name=ifelse(is.na(acronym_s),name_s,acronym_s)) %>%
mutate(labo_name=ifelse(labo_name=='EREN [CRESS - U1153 / UMR_A 1125]',"EREN",labo_name),
labo_name=ifelse(labo_name=='PRODIG (UMR_8586 / UMR_D_215 / UM_115)',"PRODIG",labo_name),
labo_name=ifelse(labo_name=='Écologie et Émergence des Pathogènes Transmis par les Arthropodes / Ecology and Emergence of Arthropod-borne Pathogens',
"Institut Pasteur, Paris",labo_name),
labo_name=ifelse(labo_name=="GC (UMR_8504)","Géographie-Cité",labo_name),
labo_name=ifelse(labo_name=="Métis Lab EM Normandie","Métis Lab",labo_name),
labo_name=ifelse(labo_name=="UMR 228 Espace-Dev, Espace pour le développement",
"UMR 228 Espace-Dev",labo_name)) %>%
mutate(labo_name=ifelse(grepl("LITIS",labo_name),"LITIS",labo_name)) %>%
mutate(labo_name=str_split_i(pattern = " = ",labo_name,1) %>% unlist)
rosette_lab=labo %>% dplyr::select(labo_name,name_s,labo_id) %>%
distinct()
datatable(labo,options=list(pageLength = 5))
```
### Des laboratoires avec plusieurs identifiants (multisite)
```{r}
list_labo_multiple=labo %>% dplyr::select(labo_id,labo_name) %>%
distinct() %>%
count(labo_name) %>%
arrange(desc(n)) %>%
filter(n>1) %>%
pull(labo_name)
labo %>%
filter(labo_name %in% list_labo_multiple) %>%
arrange(labo_name) %>%
datatable(options=list(pageLength = 5))
```
```{r}
# tous les auteurs et leur labos :
labo_all=read_csv("data/labo_info_raw.csv") %>%
filter(labo_id %in% labo$labo_id) %>%
inner_join(rosette) %>%
dplyr::select(-labo_name) %>%
inner_join(labo %>% dplyr::select(labo_id,labo_name,acronym_s))
# labo_all %>% dplyr::select(labo_id,labo_name) %>% distinct() %>% count(labo_name) %>% arrange(desc(n))
lab_author=labo_all %>%
dplyr::count(nom_simple,labo_id,labo_name) %>%
distinct() %>%
mutate(labo_name=ifelse(nom_simple %in% umr_simple$nom_simple,"IDEES",labo_name))
prod_labo_doublon=lab_author %>%
group_by(labo_name,labo_id) %>%
summarise(nb_prod=sum(n)) %>%
ungroup() %>%
arrange(desc(nb_prod)) %>%
group_by(labo_name) %>%
mutate(nb_labo=n(),
ordre_labo=1:n()) %>%
ungroup() %>%
arrange(desc(nb_labo),
desc(labo_name),
ordre_labo)
has_ror=labo %>%
dplyr::select(labo_id,ror_s)
prod_labo_doublon=prod_labo_doublon %>%
left_join(has_ror)
prod_labo_doublon %>%
filter(labo_name != "IDEES") %>%
datatable(options=list(pageLength = 5))
```
On va raisonner maintenant en tant que labo_name et plus labo_id. Par contre on va quand meme récupérer le ROR avec une regle simple : Pour chaque labo, classé par ordre de production, on prend le ror le mieux classé.
```{r}
prod_labo_doublon_ror=prod_labo_doublon %>%
group_by(labo_name) %>%
mutate(nb_ror_na=length(which(is.na(ror_s)==TRUE))) %>%
ungroup()
prod_labo_doublon_ror_ok=prod_labo_doublon_ror %>%
# filter(nb_labo != nb_ror_na) %>%
arrange(desc(nb_prod)) %>%
group_by(labo_name) %>%
group_modify(function(x,...) {
if(unique(x$nb_labo)==unique(x$nb_ror_na)){
x=x %>% arrange(ordre_labo) %>%
slice(1)
}
if(unique(x$nb_labo)!= unique(x$nb_ror_na)){
x=x %>%
filter(!is.na(ror_s)) %>%
arrange(ordre_labo) %>%
slice(1)
}
return(x)
}) %>%
ungroup() %>%
arrange(desc(nb_prod))
labo_name_clean=prod_labo_doublon_ror_ok %>%
dplyr::select(labo_name,ror_s,labo_id) %>%
inner_join(labo)
```
```{r}
# labo_all %>%
# dplyr::select(labo_id,labo_name) %>%
# distinct() %>%
# count(labo_name) %>%
# arrange(
# desc(n)
# ) %>% datatable(options=list(pageLength = 5))
#
# labo_all %>%
# filter(labo_name=="Géographie-cités") %>%
# dplyr::select(labo_id,labo_name) %>% distinct()
```
Pour les affiliations, certaines personnes vont mettre parfois leur institution, leur département, ou leur laboratoire. Pour faire simple on prend l'affiliation majoritaire de chacun.
Par exemple (pris aléatoirement):
```{r}
samp_user=labo_all %>% count(nom_simple,labo_name) %>% arrange(desc(n)) %>%
count(nom_simple) %>%
arrange(desc(n)) %>%
filter(n >3) %>%
slice_sample(n=1,weight_by = n) %>%
pull(nom_simple)
# samp_user="j gravier"
labo_all %>% filter(nom_simple %in% samp_user) %>%
count(labo_name,nom_simple) %>% datatable(options=list(pageLength = 5))
```
```{r}
labo_maj=labo_all %>%
# filter(grepl("tremelo",nom_simple)) %>%
# left_join(labo_name_clean) %>%
# left_join(labo %>% dplyr::select(labo_id,labo_name)) %>%
# count(labo_id,labo_name,nom_simple) %>%
count(labo_name,nom_simple) %>%
arrange(desc(n)) %>%
group_by(nom_simple) %>%
group_modify(function(x,...) {
# print(x)
# si il y a au moins une affialition CNRS
if(length(grep("CNRS",x$labo_name))>=1 &
# mais aussi d'autres affiliations
nrow(x %>% filter(!grepl("CNRS",x$labo_name))) >=1){
# dans ce cas on ne prend pas le CNRS mais l'autre principale
x=x %>% filter(!grepl("CNRS",x$labo_name)) %>%
arrange(desc(n)) %>% slice(1)
} else{
x=x %>%
# arrange(desc(n)) %>%
slice(1)
}
return(x)
}
) %>%
# slice(1) %>%
ungroup() %>%
arrange(desc(n)) %>%
left_join(labo_name_clean) %>%
mutate(labo_id=ifelse(nom_simple %in% umr_simple$nom_simple,97036,labo_id)) %>%
mutate(labo_name=ifelse(nom_simple %in% umr_simple$nom_simple,"IDEES",labo_name))
labo_maj %>% filter(nom_simple %in% samp_user) %>%
datatable(options=list(pageLength = 5))
labo_all=labo_all %>%
dplyr::select(halId_s,nom_simple) %>%
inner_join(labo_maj %>% dplyr::select(-n))
```
## Statistiques globales
```{r}
paper_labo=paper %>% inner_join(labo_maj)
paper_acl=paper_labo %>% filter(docType_s %in% c("ART","ISSUE"))
paper_ouv=paper_labo %>% filter(docType_s %in% c("OUV","COUV"))
```
::: panel-tabset
### Sur l'ensemble du labo
```{r}
#| fig-width: 9
#| fig-height: 16
#|
stat_collab=paper_labo %>%
dplyr::select(labo_name,halId_s,docType_s) %>%
distinct() %>%
filter(labo_name != "IDEES") %>%
count(docType_s,labo_name) %>%
count(docType_s) %>%
left_join(type_doc)
stat_collab %>%
ggplot(aes(x=reorder(type,n),y=n))+
geom_col()+
ggtitle("Nombre total de laboratoires différents\nimpliqués dans un type de production scientifique")+
geom_text(aes(label=n))+
ylab("Nb")+
xlab("")+
theme_bw(base_size = 14)+
theme(axis.text.x=element_text(angle=45,hjust=1))
ggsave("figures/fig_11.svg",device = svglite::svglite)
stat_collab %>%
# left_join(rosette_lab) %>%
# filter(is.na(label_champs)) %>%
# dplyr::select(-type2) %>%
download_this(
output_name = "stat_collab_global_type",
output_extension = ".csv",
button_label = "Nombre de collaborations par type de production",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
### Par champs
```{r}
#| fig-width: 12
#| fig-height: 10
stat_collab_champs=paper_labo %>%
inner_join(paper_champ %>% dplyr::select(halId_s,champ1) %>%
distinct()) %>%
left_join(rosette_champs,by=c("champ1"="champs")) %>%
dplyr::select(labo_name,halId_s,docType_s,label_champs) %>%
filter(labo_name != "IDEES") %>%
# dplyr::select()
distinct() %>%
count(docType_s,labo_name,label_champs) %>%
count(docType_s,label_champs) %>%
left_join(type_doc)
stat_collab_champs %>%
ggplot(aes(x=reorder(type,n),y=n))+
geom_col()+
ggtitle("Nombre total de laboratoires différents\nimpliqués dans un type de production scientifique")+
geom_text(aes(label=n))+
ylab("Nb")+
xlab("")+
theme_bw(base_size = 14)+
theme(axis.text.x=element_text(angle=45,hjust=1))+
facet_wrap_color(vars(label_champs),nrow=2,#lab_colors="auto",
colors=pal)
ggsave("figures/fig_12.svg",device = svglite::svglite)
stat_collab_champs %>%
# left_join(rosette_lab) %>%
# filter(is.na(label_champs)) %>%
# dplyr::select(-type2) %>%
download_this(
output_name = "stat_collab_global_type_champs",
output_extension = ".csv",
button_label = "Nombre de collaborations par type de production par champs",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
:::
## Principales collaborations, tout type de prod'
Nous ne compterons ici que les différents labos/instituts dans une publication. Deux personnes d'un même institut dans une même publi ne compteront que pour un.
::: panel-tabset
### Général
```{r}
#| fig-width: 9
#| fig-height: 16
collab_all=paper_labo %>%
dplyr::select(labo_name,halId_s) %>%
distinct() %>%
filter(labo_name != "IDEES") %>%
count(labo_name) %>%
arrange(desc(n),nchar(labo_name)) %>%
mutate(labo_name=factor(labo_name,levels=rev(.$labo_name))) %>%
mutate(rank=dense_rank(-n))
p_all=collab_all %>%
# filter(n>3) %>%
slice(1:40) %>%
ggplot()+
geom_col(aes(y=labo_name,x=n))+
theme_bw(base_size=12)+
geom_text(aes(y=labo_name,x=max(n),label = rank))+
ggtitle("Les 40 principaux partenaires")+
xlab("Nombre de publication")+
ylab("")
ggplotly(p_all)
ggsave("figures/fig_13.svg",device = svglite::svglite)
collab_all %>%
left_join(rosette_lab) %>%
# filter(is.na(label_champs)) %>%
# dplyr::select(-type2) %>%
download_this(
output_name = "main_lab_all",
output_extension = ".csv",
button_label = "les 40 principaux labos - toute production",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
### Par champs
Ici une meme production peut mobiliser plusieurs membres dans des champs différents. Les valeurs présentées sont donc susceptibles d’être plus importantes que sur les statistiques globales de l’UMR.
```{r}
#| fig-width: 9
#| fig-height: 16
collab_acl=paper_acl %>%
dplyr::select(labo_name,halId_s) %>%
distinct() %>%
filter(labo_name != "IDEES") %>%
count(labo_name) %>%
arrange(desc(n),nchar(labo_name)) %>%
mutate(labo_name=factor(labo_name,levels=rev(.$labo_name)))
champs_all=paper_labo %>%
inner_join(umr_simple %>% dplyr::select(nom_simple,champ1)) %>%
left_join(rosette_champs,by=c("champ1"="champs")) %>%
dplyr::select(halId_s,label_champs) %>%
distinct()
collab_all_champs=paper_labo %>%
dplyr::select(labo_name,halId_s) %>%
distinct() %>%
filter(labo_name != "IDEES") %>%
inner_join(champs_all) %>%
count(labo_name,label_champs) %>%
arrange(desc(n),nchar(labo_name))
ordre=collab_all_champs %>% group_by(labo_name) %>% summarise(nb=sum(n)) %>% arrange(desc(nb)) %>%
mutate(rank=dense_rank(-nb))
sel_lab_tmp=collab_all %>%
# group_by(labo_name)
filter(n >4) %>%
pull(labo_name)
p_tmp=collab_all_champs %>%
filter(!is.na(label_champs)) %>%
# filter(labo_name %in% as.character(sel_lab_tmp)) %>%
# inner_join(collab_all %>% rename(ntot=n)) %>%
# arrange(desc(ntot),desc(n)) %>%
inner_join(ordre %>%
slice(1:40)) %>%
arrange(rank,nchar(labo_name)) %>%
mutate(labo_name=factor(labo_name)) %>%
# filter(rank <40) %>%
# slice(1:40) %>%
ggplot()+
geom_col(aes(y=reorder(labo_name,-rank),x=n,fill=label_champs))+
scale_fill_manual(values=pal)+
ggtitle("Les 40 principales collaborations (ACL)")+
xlab("Nombre de publication ACL")+
ylab("")
# facet_wrap(~label_champs)
ggplotly(p_tmp)
ggsave("figures/fig_14.svg",device = svglite::svglite)
```
```{r}
#| fig-width: 9
#| fig-height: 12
collab_all_champs %>%
arrange(desc(n),nchar(labo_name)) %>%
filter(!is.na(label_champs)) %>%
group_by(label_champs) %>%
slice(1:15) %>%
filter(n>1) %>%
ungroup() %>%
inner_join(collab_all %>% rename(nb_tot=n)) %>%
ggplot()+
geom_col(aes(x=reorder(labo_name,nb_tot),y=n),width = 0.8)+
# facet_grid_color(vars(label_champs), colors=pal,nrow=3,
# scales = "free_y", space = "free_y")
facet_wrap_color(vars(label_champs),nrow=3,ncol=2,#lab_colors="auto",
colors=pal,scale="free") +
theme_bw(base_size=12)+
ggtitle("Les labos avec au moins 2 collaborations")+
ylab("Nombre de publication ACL")+
xlab("")+
theme(axis.text.x = element_text(angle=45,hjust=1))
ggsave("figures/fig_15.svg",device = svglite::svglite)
# p_tmp
collab_all_champs %>%
left_join(rosette_lab) %>%
filter(is.na(label_champs)) %>%
# dplyr::select(-type2) %>%
download_this(
output_name = "main_lab_all_champs",
output_extension = ".csv",
button_label = "les principales collaborations entre labo par champs (toute production)",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
:::
## Principales collaborations dans des ACL
::: panel-tabset
### Général
```{r}
#| fig-width: 9
#| fig-height: 16
# champs_acl=paper_acl %>%
# inner_join(umr_simple %>% dplyr::select(nom_simple,champ1)) %>%
# left_join(rosette_champs,by=c("champ1"="champs")) %>%
# dplyr::select(halId_s,label_champs) %>%
# distinct()
collab_acl=paper_acl %>%
dplyr::select(labo_name,halId_s) %>%
distinct() %>%
filter(labo_name != "IDEES") %>%
count(labo_name) %>%
arrange(desc(n),nchar(labo_name)) %>%
mutate(labo_name=factor(labo_name,levels=rev(.$labo_name)))
p_acl=collab_acl %>%
filter(n>3) %>%
slice(1:40) %>%
ggplot()+
geom_col(aes(y=labo_name,x=n))+
theme_bw(base_size=12)+
ggtitle("Les 40 principaux laboratoires (ACL)")+
xlab("Nombre de publication ACL")+
ylab("")
ggplotly(p_acl)
ggsave("figures/fig_16.svg",device = svglite::svglite)
collab_acl %>%
left_join(rosette_lab) %>%
# filter(is.na(label_champs)) %>%
# dplyr::select(-type2) %>%
download_this(
output_name = "main_lab_acl",
output_extension = ".csv",
button_label = "les 40 principaux labos ACL",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
### Par champs
Ici une meme ACL peut mobiliser plusieurs membres dans des champs différents. Les valeurs présentées sont donc susceptibles d'être plus importantes que sur les statistiques globales de l'UMR.
```{r}
#| fig-width: 9
#| fig-height: 16
champs_acl=paper_acl %>%
inner_join(umr_simple %>% dplyr::select(nom_simple,champ1)) %>%
left_join(rosette_champs,by=c("champ1"="champs")) %>%
dplyr::select(halId_s,label_champs) %>%
distinct()
# paper_champs=paper_acl %>%
# dplyr::select(halId_s,nom_simple) %>%
# left_join(labo_maj) %>%
# inner_join(umr_simple %>% dplyr::select(nom_simple,champ1)) %>%
# dplyr::select(halId_s,champ1) %>%
# rename(champs=champ1) %>%
# left_join(rosette_champs) %>%
# distinct()
#
# yo=paper_acl %>%
# dplyr::select(halId_s,nom_simple) %>%
# inner_join(labo_maj) %>%
# inner_join(paper_champs) %>%
# dplyr::select(labo_name,label_champs) %>%
# distinct() %>%
# filter(labo_name != "IDEES") %>%
# inner_join(all_geocode_lite %>% st_drop_geometry() %>%
# dplyr::select(labo_name,region) %>% distinct())
collab_acl_champs=paper_acl %>% # les publications ACL
dplyr::select(labo_name,halId_s) %>% # on récupère les labos et les id hal
distinct() %>% # on supprime les doublons (pour les labos)
filter(labo_name != "IDEES") %>% # on supprimer l'UMR IDEES
inner_join(champs_acl) %>% # on associe les champs à une publi (plusieurs possibilités)
count(labo_name,label_champs) %>% # on compte par labo et par champs
arrange(desc(n),nchar(labo_name))
agg_collab=collab_acl_champs %>%
group_by(labo_name) %>%
summarise(nb_tot=sum(n))
sel_lab_tmp=agg_collab %>%
filter(nb_tot >3) %>%
pull(labo_name)
p_tmp=collab_acl_champs %>%
arrange(desc(n),nchar(labo_name)) %>%
filter(!is.na(label_champs)) %>%
filter(labo_name %in% sel_lab_tmp) %>%
# filter(n>2) %>%
# group_by(label_champs) %>%
# slice(1:15) %>%
# filter(n>1) %>%
# ungroup() %>%
inner_join(agg_collab) %>%
arrange(desc(nb_tot)) %>%
ggplot()+
geom_col(aes(y=reorder(labo_name,nb_tot),x=n,fill=label_champs))+
scale_fill_manual(values=pal)+
ggtitle("Les labos avec au moins 4 collaborations")+
xlab("Nombre de publication ACL")+
ylab("")
# facet_wrap(~label_champs)
ggplotly(p_tmp)
ggsave("figures/fig_17.svg",device = svglite::svglite)
```
```{r}
#| fig-width: 9
#| fig-height: 12
collab_acl_champs %>%
arrange(desc(n),nchar(labo_name)) %>%
filter(!is.na(label_champs)) %>%
group_by(label_champs) %>%
slice(1:15) %>%
filter(n>1) %>%
ungroup() %>%
inner_join(collab_acl %>% rename(nb_tot=n)) %>%
ggplot()+
geom_col(aes(x=reorder(labo_name,nb_tot),y=n),width = 0.8)+
# facet_grid_color(vars(label_champs), colors=pal,nrow=3,
# scales = "free_y", space = "free_y")
facet_wrap_color(vars(label_champs),nrow=3,ncol=2,#lab_colors="auto",
colors=pal,scale="free") +
theme_bw(base_size=12)+
ggtitle("Les labos avec au moins 2 collaborations")+
ylab("Nombre de publication ACL")+
xlab("")+
theme(axis.text.x = element_text(angle=45,hjust=1))
ggsave("figures/fig_18.svg",device = svglite::svglite)
# p_tmp
collab_acl_champs %>%
left_join(rosette_lab) %>%
filter(is.na(label_champs)) %>%
# dplyr::select(-type2) %>%
download_this(
output_name = "main_lab_acl_champs",
output_extension = ".csv",
button_label = "les principales collaborations entre labo (ACL)",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
:::
## Principales collaborations dans des ouvrages / articles d'ouvrages
::: panel-tabset
### Général
```{r}
#| fig-width: 9
#| fig-height: 16
collab_ouv=paper_ouv %>%
dplyr::select(labo_name,halId_s) %>%
distinct() %>%
filter(labo_name != "IDEES") %>%
count(labo_name) %>%
arrange(desc(n),nchar(labo_name)) %>%
mutate(labo_name=factor(labo_name,levels=rev(.$labo_name)))
p_ouv=collab_ouv %>%
# filter(n>3) %>%
slice(1:40) %>%
ggplot()+
geom_col(aes(y=labo_name,x=n))+
theme_bw(base_size=12)+
ggtitle("Les principaux laboratoires (Ouvrages)")+
xlab("Nombre d'ouvrages/chapitres")+
ylab("")
ggplotly(p_ouv)
ggsave("figures/fig_19.svg",device = svglite::svglite)
collab_ouv %>%
left_join(rosette_lab) %>%
# filter(is.na(label_champs)) %>%
# dplyr::select(-type2) %>%
download_this(
output_name = "main_lab_ouv",
output_extension = ".csv",
button_label = "les 40 principaux labos ouv",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
### Par champs
```{r}
#| fig-width: 9
#| fig-height: 16
#|
champs_ouv=paper_ouv %>%
inner_join(umr_simple %>% dplyr::select(nom_simple,champ1)) %>%
left_join(rosette_champs,by=c("champ1"="champs")) %>%
dplyr::select(halId_s,label_champs) %>%
distinct()
collab_ouv_champs=paper_ouv %>%
dplyr::select(labo_name,halId_s) %>%
filter(labo_name != "IDEES") %>%
distinct() %>%
left_join(champs_ouv) %>%
count(labo_name,label_champs) %>%
arrange(desc(n),nchar(labo_name))
agg_collab=collab_ouv_champs %>%
group_by(labo_name) %>%
summarise(nb_tot=sum(n))
p_tmp=collab_ouv_champs %>%
arrange(desc(n),nchar(labo_name)) %>%
filter(!is.na(label_champs)) %>%
filter(n>1) %>%
inner_join(agg_collab) %>%
arrange(desc(nb_tot)) %>%
ggplot()+
geom_col(aes(y=reorder(labo_name,nb_tot),x=n,fill=label_champs))+
scale_fill_manual(values=pal)+
ggtitle("Les labos avec au moins deux collaborations")+
xlab("Nombre de publications (Ouvrages)")+
ylab("")
# facet_wrap(~label_champs)
ggplotly(p_tmp)
ggsave("figures/fig_20.svg",device = svglite::svglite)
```
```{r}
#| fig-width: 9
#| fig-height: 12
collab_ouv_champs %>%
arrange(desc(n),nchar(labo_name)) %>%
mutate(labo_name=substr(labo_name,0,20)) %>%
filter(!is.na(label_champs)) %>%
group_by(label_champs) %>%
filter(n>=1) %>%
# slice(1:30) %>%
ungroup() %>%
inner_join(collab_ouv %>% rename(nb_tot=n)) %>%
ggplot()+
geom_col(aes(x=reorder(labo_name,nb_tot),y=n),width = 0.8)+
# facet_grid_color(vars(label_champs), colors=pal,nrow=3,
# scales = "free_y", space = "free_y")
facet_wrap_color(vars(label_champs),nrow=3,ncol=2,#lab_colors="auto",
colors=pal,scale="free") +
theme_bw(base_size=10)+
ggtitle("Les labos avec au moins une collaboration")+
ylab("Nombre de publication (ouvrages)")+
xlab("")+
theme(axis.text.x = element_text(angle=45,hjust=1))
ggsave("figures/fig_21.svg",device = svglite::svglite)
# p_tmp
collab_ouv_champs %>%
left_join(rosette_lab) %>%
filter(is.na(label_champs)) %>%
# dplyr::select(-type2) %>%
download_this(
output_name = "main_lab_ouv_champs",
output_extension = ".csv",
button_label = "les principales collaborations entre labo (ouv)",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
:::
# L'UMR dans l'espace
## Préambule : localisation des laboratoires / instituts
La localisation des laboratoires / instituts a été faite en plusieurs temps, selon les situations. \* le laboratoire / institut est inscrit dans le ROR (Research Organization Registry). Dans ce cas on regarde les informations fournies en interrogeant [https://api.ror.org/v2/organizations/ID_ROR](https://api.ror.org/v2/organizations/04kcjtk03) et on extrait la localisation précise (lon/lat) si renseignée. Si aucune localisation n'est renseignée, dans ce cas on passe à l'étape suivante. \* Pas de ROR ou de localisation : Dans ce cas on regarde l'adresse renseignée dans la base. On utilise une appli type geoname pour convertir l'adresse (+ville + pays) en lat / lon. \* Si cela ne renvoi rien, on regarde juste la ville et le pays. \* Si cela ne renvoi toujours rien, on pose des règles pour adapter l'adresse pour quelle soit intelligible (suppression d'informations inutiles, de double code postaux, etc...)
## Localisation des laboratoires / instituts
Nous présentons ici les collaborations via des productions scientifiques entre l'UMR les différents institutions de recherches.
```{r}
all_geocode_lite=read_sf("data/loc_labo.gpkg")
# rosette_lab=labo_all %>%
rosette_lab=labo%>%
mutate(labo_name=ifelse(grepl("LITIS",labo_name),"LITIS",labo_name)) %>%
dplyr::select(labo_id,labo_name) %>%
distinct()
all_geocode_lite=all_geocode_lite %>%
left_join(rosette_lab) %>%
mutate(region=ifelse(
country_s %in% c("de","es","ch","be","it",
"no","se","fi","dk","lb",
"lt","pl","ro","mx","gr","pt","cy","bg",
"za","gb"),
"Europe","Monde"
)) %>%
mutate(region=ifelse(country_s=="fr","France",region)) %>%
group_by(labo_name) %>%
slice(1) %>%
ungroup() %>%
st_jitter(factor=0.00001)
# all_geocode_lite %>% st_drop_geometry() %>%
# count(country_s,region)
```
Les cartes suivantes présentent le nombre de collaboration (taille et couleurs des points) pour chaque institution de recherche.
::: panel-tabset
### Toute collaboration
```{r}
labo_collab=labo_all %>%
# group_by(halId_s) %>%
count(halId_s,labo_name) %>%
arrange(desc(n)) %>%
count(labo_name) %>%
arrange(desc(n)) %>%
filter(labo_name!="IDEES")
labo_collab_all_sf=all_geocode_lite %>%
# dplyr::select(-n) %>%
inner_join(labo_collab) %>%
dplyr::select(n,labo_name)
mapview(labo_collab_all_sf,cex="n",zcol="n")
```
### ACL
```{r}
labo_collab_acl=labo_all %>%
inner_join(paper_type) %>%
filter(docType_s %in% c("ART","ISSUE")) %>%
# group_by(halId_s) %>%
count(halId_s,labo_name) %>%
arrange(desc(n)) %>%
count(labo_name) %>%
arrange(desc(n)) %>%
filter(labo_name!="IDEES")
labo_collab_all_sf_acl=all_geocode_lite %>%
# dplyr::select(-n) %>%
inner_join(labo_collab_acl) %>%
dplyr::select(n,labo_name)
mapview(labo_collab_all_sf_acl,cex="n",zcol="n")
```
### Ouvrage
```{r}
labo_collab_ouv=labo_all %>%
inner_join(paper_type) %>%
filter(docType_s %in% c("OUV","COUV")) %>%
# filter(docType_s %in% c("ART","ISSUE")) %>%
# group_by(halId_s) %>%
count(halId_s,labo_name) %>%
arrange(desc(n)) %>%
count(labo_name) %>%
arrange(desc(n)) %>%
filter(labo_name!="IDEES")
labo_collab_all_sf_ouv=all_geocode_lite %>%
# dplyr::select(-n) %>%
inner_join(labo_collab_ouv) %>%
dplyr::select(n,labo_name)
mapview(labo_collab_all_sf_ouv,cex="n",zcol="n")
```
:::
Les cartes suivantes présentent le nombre de laboratoire (numéro) par zone géographiques. La taille des cercles correspond au nombre de collaboration.
::: panel-tabset
### Toutes collaborations (leaflet)
```{r}
pal <- colorQuantile("YlOrRd", labo_collab_all_sf$n)
leaflet() %>%
addTiles() %>%
addProviderTiles(providers$Esri.WorldTopoMap) %>%
addCircleMarkers(data = labo_collab_all_sf,
label=~paste0(labo_name,"\n",
n),
labelOptions = labelOptions(
noHide = TRUE, # Keeps the label always visible (not just on hover)
textOnly = TRUE, # Removes the default white background box
direction = "top", # Position of the label relative to the circle
style = list("font-weight" = "bold", "font-size" = "12px")
),
clusterOptions = markerClusterOptions(),
fillOpacity = 0.5,
radius = ~n, #color = ~pal(n),
stroke = FALSE)
# mapview(labo_collab_all_sf,cex="n",zcol="n")
```
### ACL (leaflet)
```{r}
leaflet() %>%
addTiles() %>%
addProviderTiles(providers$Esri.WorldTopoMap) %>%
addCircleMarkers(data = labo_collab_all_sf_acl,
label=~paste0(labo_name,"\n",
n),
labelOptions = labelOptions(
noHide = TRUE, # Keeps the label always visible (not just on hover)
textOnly = TRUE, # Removes the default white background box
direction = "top", # Position of the label relative to the circle
style = list("font-weight" = "bold", "font-size" = "12px")
),
clusterOptions = markerClusterOptions(),
fillOpacity = 0.5,
radius = ~n, #color = ~pal(n),
stroke = FALSE)
# mapview(labo_collab_all_sf_acl,cex="n",zcol="n")
```
### Ouvrage (leaflet)
```{r}
leaflet() %>%
addTiles() %>%
addProviderTiles(providers$Esri.WorldTopoMap) %>%
addCircleMarkers(data = labo_collab_all_sf_ouv,
label=~paste0(labo_name,"\n",
n),
labelOptions = labelOptions(
noHide = TRUE, # Keeps the label always visible (not just on hover)
textOnly = TRUE, # Removes the default white background box
direction = "top", # Position of the label relative to the circle
style = list("font-weight" = "bold", "font-size" = "12px")
),
clusterOptions = markerClusterOptions(),
fillOpacity = 0.5,
radius = ~n, #color = ~pal(n),
stroke = FALSE)
```
:::
## Stat par répartition géographique et par champs
Ici sont représentées les collaborations par institutions de recherches par zone géographiques. Contrairement à ce qui est présenté plus haut (4.2), nous prenons ici en compte les multiples travaux en commun. Par exemple si un 5 ACL ont été publiées avec une même institution en France par des membres d'un champs, tous ces articles seront pris en compte. Les diagrammes suivant peuvent être donc interprétés comme la part des ACL par champs et par grande région (France, Europe, Monde).
```{r}
collab_acl_champs_pays=collab_acl_champs %>%
inner_join(all_geocode_lite %>% st_drop_geometry() %>%
dplyr::select(labo_name,region) %>% distinct())
tot_publi_champ_acl=collab_acl_champs_pays %>%
group_by(label_champs) %>%
summarise(nb=sum(n))
```
```{r}
#| fig-width: 12
#| fig-height: 7
stat_collab_acl_champs_pays= collab_acl_champs_pays %>%
mutate(region=factor(region,levels=c("France","Europe","Monde"))) %>%
arrange(region) %>%
group_by(label_champs,region) %>%
summarise(n=sum(n)) %>%
ungroup() %>%
group_by(label_champs) %>%
arrange(desc(region)) %>%
mutate(sum_chamsp=sum(n)) %>%
mutate(pc=round(100*n/sum(n))) %>%
mutate(pos=(cumsum(n)-n/2)) %>%
ungroup() %>%
# mutate(lab_pc=paste(n, "/",pc,"%"))
mutate(lab_pc=paste(pc,"%"))
stat_collab_acl_champs_pays %>%
ggplot(aes(x=""))+
geom_bar(stat="identity",aes(fill=region,y=n))+
geom_text_repel(aes(label = lab_pc,y=pos))+
facet_wrap_color(vars(label_champs),nrow=2,#lab_colors="auto"
colors=pal,scale="free") +
coord_polar("y",start=0)+
scale_fill_brewer(palette="Set2",name="")+
geom_text(data=tot_publi_champ_acl,
aes(x=-Inf,y=Inf,
label=paste0("Total=",nb)),
hjust = 0.5,
vjust=7.5)+
ggtitle("Collaboration ACL par zone géographique selon les champs")+
theme_bw(base_size = 12)+
theme(legend.position = "bottom",
legend.direction = "horizontal",axis.text = element_blank(),
)+
xlab("")+ylab("")
ggsave("figures/fig_22.svg",device = svglite::svglite)
stat_collab_acl_champs_pays%>% # dplyr::select(-pc_champ) %>%
# filter(champs != "Autre") %>%
download_this(
output_name = "stat_champs_acl_world",
output_extension = ".csv",
button_label = "Collaboration via ACL et champs(CSV)",
button_type = "primary",
has_icon = TRUE,
icon = "fa fa-download"
)
```
# Informations de session
```{r session_info, echo=FALSE}
sessionInfo()
```