Code
# con_bibmet <- bibliotools::con_bib_mssql(db = "bibmet")
# con_bibsta <- bibliotools::con_bib_mssql(db = "bibstat")Here we adopt a bibliometric approach to elucidate publishing practices in scholarly journals on the topic of Upper Cretaceous Lagersätten from Lebanon. Our main aim is to explore levels of collaboration between Lebanese and international organisations/institutions as a way to measure degrees of ‘inclusivity’ or ‘participation’ by local researchers. We also look at primary text languages, availability of Arabic abstracts, and open access status of publications. We argue that the regular inclusion of Lebanese researchers on these subjects is critical for student, academic, and institutional advancement in Lebanon and across the Middle East region.
The KTH Library database Bibmet, is a relational database that constitutes a bibliometric version of Web of Science (WoS).
Bibmet contains the following indexes:
SCIE, SSCI, AHCI from 1980 and CPCI-S and CPCI-SSH from 1990.
# con_bibmet <- bibliotools::con_bib_mssql(db = "bibmet")
# con_bibsta <- bibliotools::con_bib_mssql(db = "bibstat")Manual web scraping from Google scholar (Gs) was performed to collect publications on Upper Cretaceous Lebanese Lagersätten that are absent in the Web of Science and Scopus databases. These encompass a range of document types, such as book chapters and articles, written in English, French, Italian, and German, covering the period from 1903 to 2017.
The following publication attributes were recorded:
GS <-
openxlsx::read.xlsx(xlsxFile = "gs_list.xlsx") |>
mutate(PY = as.character(PY))
# mutate(TI = stringr::str_to_title(Title),
# TI = iconv(TI, from = 'UTF-8', to = 'ASCII//TRANSLIT')) |>
# arrange(desc(TI)) |>
# rename("TI" = "Title") |>
# distinct(TI) # 42 distinct publications not found in WoS.We downloaded available publications from WoS using the following advanced searches:
Data download: 2013-10-15
Publication details accessed via Bibmet include WoS Subject Categories, Languages, and Countries.
# Network data (WoS)
# WoS_network <-
# WoS <-
# list.files(path = "WoS/",pattern = "wos-",full.names = T) |>
# purrr::map_dfr(~ readr::read_delim(.x, col_types = cols(.default = "c"), show_col_types = FALSE)) |>
# mutate(UT = gsub("WOS:","", UT)) |>
# distinct(UT, .keep_all = T)
# write.table(WoS_network, file = "wos-network.txt", sep = "\t",
# row.names = F, col.names = T,quote = FALSE)WoS <-
list.files(path = "WoS/",pattern = "wos-",full.names = T) |>
purrr::map_dfr(~ readr::read_delim(.x, col_types = cols(.default = "c"), show_col_types = FALSE)) |>
mutate(UT = gsub("WOS:","", UT)) |>
distinct(UT, .keep_all = T) |>
as.data.frame() |>
mutate(TI = stringr::str_to_title(TI),
TI = iconv(TI, from = 'UTF-8', to = 'ASCII//TRANSLIT')) |>
# Add new fields: AA = Arabic Abstract and OA = Other_Abstract
mutate(AA = NA,
OA = NA) |>
select(any_of(c("AU","TI","SO","LA","DT","C1","C3","SN","EI","PY","DI","WC","SC","DA","UT","AA","OA")))
# Fetch additional details for WoS records with UT numbers.
WoS_biblioinfo <- openxlsx::read.xlsx(xlsxFile = "WoS_biblioinfo.xlsx")
# WoS_biblioinfo <-
# con_bibmet |> tbl("BestResAddr") |> select(-Org_type_code, -Org_type_correction) |>
# inner_join(con_bibmet |> tbl("Lang_Doc") |> select("Doc_id","Language"), by = "Doc_id") |>
# inner_join(WoS |> select(UT), by = "UT", copy = T) |>
# collect() |>
# # Determine the number of countries and languages per UT.
# group_by(UT) |>
# reframe(CU = paste(Country_name, collapse = "; "),
# LA = paste(Language)) |>
# distinct(UT,.keep_all = T)
# Merge in new field data.
WoS_enriched <-
WoS |> select(everything()) |>
left_join(WoS_biblioinfo, by = "UT", suffix=c("",".y")) |>
mutate(AA = "No") |>
# Add filed with the number of authors with a Lebanese affiliation per article.
mutate(ALA = c(2,rep(0,15),1,rep(0,9),1,rep(0,7),1,0,1,0,1,0,1,rep(0,6))) |>
select(-ends_with(".y"))
# Title overlap between WoS and Google scholar publication data?
# Fuzzy matching using OSA ≥ 15 was shown to be a mismatch.
# WoGo <-
# WoS |>
# fuzzyjoin::stringdist_inner_join(y = GspL,
# by = "TI",
# max_dist = 30, method = "osa",
# distance_col = "osa_dist") |>
# select("TI.x","TI.y","osa_dist") |>
# rename("TI_WoS" = "TI.x",
# "TI_Google" = "TI.y") |>
# mutate(levenshtein_score = stringdist("TI_WoS", "TI_Google", method = "lv"),
# jarowinkler_score = stringdist("TI_WoS", "TI_Google", method = "jw")) |>
# filter(osa_dist < 16) |>
# select("TI_WoS", "TI_Google") |>
# as_tibble()
WosGs <-
# SU = Source
WoS_enriched |> mutate(SU = "WoS") |>
bind_rows(GS |> mutate(SU = "Google scholar")) |>
# Remove non-Lebanese based studies.
filter(!grepl("Southern Germany|Tunisia",TI)) |>
mutate(CU = strsplit(CU, "; ")) |>
rowwise() |>
mutate(CU = paste(unique(unlist(CU)), collapse = "; ")) |>
arrange(desc(TI)) |>
# UT-number, Year, Authors, Source, Country, Title, Language, Arabic Abstract, Other abstract, DOI
select(any_of(c("UT","PY","AU","SU","CU","TI","LA","AA","OA","DI","ALA"))) |>
arrange(desc(SU)) # 88 articles.A total of (n = 88) unique publication from WoS and Google scholar.
# Publication volume: WoS and Google Scholar.
p1 <-
WosGs |>
rename("Year" = "PY") |>
group_by(Year) |>
count(sort = T) |>
ungroup() |>
ggplot(mapping = aes(x = Year, y = n,group=1)) +
geom_line(colour = "#2b2b2b", lwd = 1) +
geom_point(shape = 21, colour = "#2b2b2b",fill = "white", size = 4) +
geom_hline(aes(yintercept = mean(n)), linetype = 1, colour = "#DE3163",show.legend = T) +
geom_hline(aes(yintercept = median(n)), linetype = 2, colour = "#1BB6AFFF",show.legend = T) +
labs(x = "Year",y = "Number of publications",
title = "Academic publishing over time",
subtitle = "Data from WoS and Google Scholar: N = 88") +
theme_bw() +
theme(plot.title = element_text(face = "bold"),
axis.title = element_text(face = "bold"),
axis.text.x = element_text(angle = 45,hjust = 1,vjust = 1,size = 7),
aspect.ratio = 1/2)
p2 <-
WosGs |>
# Total number of authors per article.
mutate(author_count = stringr::str_count(AU, pattern = ";") + 1) |>
# Author linked to Lebanon? CL = Count Lebanese.
mutate(CL = str_count(CU, "Lebanon")) |>
select(AU,CL) |>
mutate(CL = ifelse(CL == 0, "Excludes LB-affilation","Includes LB-affiliation")) |>
# Group by Country.
group_by(CL) |>
count() |>
ggplot(aes(x = as.factor(CL), y = n, fill = as.factor(CL))) +
geom_bar(stat="identity",colour = "#2E2D29",show.legend = F) +
geom_text(aes(label = n),position = position_stack(vjust = .5), colour = "white") +
scale_color_manual(values = c("#006B81","#B83A4B")) +
scale_fill_manual(values = c("#006B81","#B83A4B")) +
# scale_fill_brewer(palette = "Pastel1") +
labs(x = "", y = "Number of publications",
title = "Publications with a Lebanese affilation",
subtitle = "Data from WoS and Google Scholar: N = 88",
fill = "") +
theme_bw() +
theme(plot.title = element_text(face = "bold"),
axis.title = element_text(face = "bold"))
# WoS Categories.
p3 <-
WoS |>
group_by(WC) |>
count(sort = F) |>
ggplot(aes(x = sort(WC), y = n)) +
geom_col() +
labs(x = NULL,y = NULL, title = "WoS categories",subtitle = "Publications from WoS-only") +
coord_flip() +
theme_bw() +
theme(plot.title = element_text(face = "bold"))
ggpubr::ggarrange(p3,ggarrange(p2,p1,ncol = 1,align = "v"))Advanced searches in Scopus made use of the following fields: Article title, Abstract and Keywords. Method note: Removal of duplicated titles was achieved using approximate string matching with optimal string alignment to identify overlapping title names with smaller variations.
Scopus <-
list.files(path = "Scopus",pattern = "scopus-",full.names = T) |>
purrr::map_dfr(~ readr::read_csv(.x,col_types = cols(.default = "c"), show_col_types = FALSE)) |>
distinct(Title, .keep_all = T) |>
as.data.frame() |>
mutate(Title = stringr::str_to_title(Title)) |>
mutate(EID = gsub("2-s2.0-","",EID),
EID = as.character(EID))
# Which articles in Scopus are not found in WoS and Google Scholar?
scwo_missing <-
Scopus |>
fuzzyjoin::stringdist_inner_join(y = WosGs,
by = c("Title" = "TI"),
max_dist = 10, method = "osa",
distance_col = "osa_dist") |>
select(Title) |>
as_tibble()
# Unique Scopus records not found in WoS and Google scholar.
Scopus_Clean <-
Scopus |>
filter(!Title %in% scwo_missing$Title) |>
filter(!EID %in% c("0027455834","85110699396","0036068081","84864051536","84994036026","85106438855")) |>
filter(!grepl("Germany|Tunisia",Title)) |>
mutate(SU = "Scopus") |>
mutate(Language = `Language of Original Document`) |>
mutate(CU = c("Italy; United States","Germany","France; Lebanon","United Kingdom")) |>
rename("PY" = "Year") |>
# Add ALA
mutate(ALA = c(0,0,2,0)) |>
select(any_of(c("Title","ISSN","EID","ISBN","DOI","SU", "Language", "PY","CU","ALA")))
# Organisms
clades <-
openxlsx::read.xlsx(xlsxFile = "publicationList-clades.xlsx") |>
select(-1)
# Merge all data sources.
LBLS <-
bind_rows(WosGs,
Scopus_Clean |> rename("TI" = "Title")) |>
mutate(TI = stringr::str_to_title(TI)) |>
# distinct(Title, .keep_all = T) |>
mutate(DOI = ifelse(is.na(DOI), DI, DOI)) |>
mutate(Language = ifelse(is.na(Language),LA,Language)) |>
mutate(CU = case_when(
UT == "000905235800007" ~ "Lebanon; China; France",
UT == "A1993KJ98800017" ~ "France",
UT == "000231210900001" ~ "United Kingdom",
UT == "001038126700001" ~ "Switzerland",
TRUE ~ CU)) |>
# Organism group.
bind_cols(clades) |>
select(any_of(c("TI","ISSN","ISBN","DOI","UT","SU","Language","PY","CU","ALA","Clade","Group")))Accounts on the Upper Cretaceous Lebanese Lagersätten have been reported on at least since 1883 and till this day. Viewed over the complete, albeit, non-consequential time-range, an average 2.7 articles have been published based on our downloaded data. Limited to the 21st century, the average publication count is 3.4 articles/annually. 2004 stands outs with 10 articles published on Lebanese fossils from the lagersätten deposits. Notably, our time-series does not yield an increase in publishing over time.
p4 <-
LBLS |>
group_by(PY) |>
count(sort = T) |>
ggplot(mapping = aes(x = PY, y = n,group=1)) +
geom_line(colour = "#2b2b2b", lwd = 1) +
geom_point(shape = 21, colour = "#2b2b2b",fill = "white", size = 4) +
geom_hline(aes(yintercept = mean(n)), linetype = 1, colour = "#DE3163") +
geom_hline(aes(yintercept = median(n)), linetype = 2, colour = "#1BB6AFFF") +
# Annotate legends.
geom_segment(aes(x = 3, y = 7.5, xend = 5, yend = 7.5), colour = "#DE3163") +
geom_segment(aes(x = 3, y = 7.0, xend = 5, yend = 7.0),colour = "#1BB6AFFF",linetype =2) +
# Annotate text
# annotate("text",x = c(6.0,6.0),y = c(7.5,7.0),label = c("Mean","Median")) +
labs(title = "Academic publishing over time",
subtitle = "Upper Cretaceous Lebanese Lagersätten: Data sourced from WoS, Google Scholar & Scopus",
x = "Year",y = "Number of publications",caption = "Solid line = Mean; Dashed-line = Median") +
theme_classic() +
theme(plot.title = element_text(face = "bold"),
axis.title = element_text(face = "bold"),
axis.text.x = element_text(angle = 45,hjust = 1,vjust = 1,size = 7),
aspect.ratio = 1/2)
plotly::ggplotly(p = p4) |>
layout(title = list(text = paste0('Publications over time',
'<br>',
'<sup>',
'Upper Cretaceous Lebanese Lagersätten: Data sourced from WoS, Google Scholar & Scopus',
'</sup>')))Figure 2. Academic publishing over time
# Authors with Lebanese institutions per publication
p5 <-
LBLS |>
group_by(ALA) |>
count(sort = T) |>
ggplot(mapping = aes(x = ALA, y = n)) +
geom_col() +
labs(x = "Count", y = "Publications", title = "Lebanese affiliated authors") +
theme_classic() +
theme(plot.title = element_text(face = "bold"),
axis.title = element_text(face = "bold"),
axis.text.x = element_text(angle = 0,hjust = 1,vjust = 1,size = 7),
aspect.ratio = 1/2)
print(p5)This section explores co-publishing partners with and without Lebanese institutional affiliations. Our data reveal 16 publications involving Lebanese institutions. This accounts for only 17.39% of all publications. Yet, when compared to other countries involvement, Lebanon ranks fourth among nations with the highest degree of engagement in Lagersätten research. Unsurprisingly, France and Italy rank highest in their respective involvement on Lebanese paleontology (more specifically, Upper Cretaceous Lagersätten).
# Co-publishing countries involving Lebanon.
LBLS |>
filter(grepl("Lebanon", CU)) |>
group_by(CU) |>
count(sort = T) |> # 16 unique publications.
ggplot(aes(x = sort(CU),y = n)) +
geom_bar(stat = "identity",color = "#006A8EFF", fill = "white") +
coord_flip() +
labs(x = "", y = "Number of publications",
title = "Co-publishing nations involving Lebanon",
subtitle = "WoS, Google Scholar, and Scopus Data",
caption = "The bar chart illustrates the number of publications on Upper Cretaceous Lebanese Lagersätten
were a Lebanese affiliate is involved. Only 16 out of 92 publication documents (17.39%) have a Lebanese
research institution involved") +
theme_classic() +
theme(axis.text.y = element_text(size = 7),
axis.text.x = element_text(size = 7),
axis.title.x = element_text(face = "bold"),
plot.title = element_text(face = "bold"))# What countries are most involved in the collaboration with Lebanese researchers?
LBLS |>
filter(grepl("Lebanon", CU)) |>
group_by(CU) |>
count(sort = T) |>
mutate(CU = strsplit(CU, "; ")) |>
unnest(cols = CU) |>
group_by(CU) |>
summarise(count = sum(n)) |>
filter(CU != "Lebanon") |> # France is the main national collaborator with Lebanon.
# Plot.
ggplot(aes(x = reorder(CU,-count),y = count)) +
geom_bar(stat = "identity",color = "#006A8EFF", fill = "white") +
coord_flip() +
labs(x = "", y = "Number of publications",
title = "Co-publishing partners",
subtitle = "WoS, Google Scholar, and Scopus Data",
caption = "The bar chart illustrates the countries most frequently engaged in co-publishing with Lebanon") +
theme_classic() +
theme(axis.text.y = element_text(size = 7),
axis.text.x = element_text(size = 7),
axis.title.x = element_text(face = "bold"),
plot.title = element_text(face = "bold"))# Co-publishing countries excluding Lebanon.
LBLS |>
filter(!grepl("Lebanon", CU)) |>
group_by(CU) |>
count(sort = T) |>
ggplot(aes(x = sort(CU),y = n)) +
geom_bar(stat = "identity",color = "#006A8EFF", fill = "white") +
coord_flip() +
labs(x = "", y = "Number of publications",
title = "Co-publishing nations excluding Lebanon",
subtitle = "WoS, Google Scholar, and Scopus Data",
caption = "The bar chart illustrates the number of publications on Upper Cretaceous Lebanese Lagersätten
were a Lebanese affiliate is not involved. 82% of the considered documents do not have a Lebanese research
institution involved") +
theme_classic() +
theme(axis.text.y = element_text(size = 7),
axis.text.x = element_text(size = 7),
axis.title.x = element_text(face = "bold"),
plot.title = element_text(face = "bold"))# Proportion wise how much does each country contribute to the involvement in
# Upper Cretaceous Lebanese fossil research?
logo <-
png::readPNG(source = "lebanon-logo.png") |>
grid::rasterGrob(interpolate=TRUE)
LBLS |>
select(CU) |>
mutate(CU = strsplit(CU, "; ")) |>
unnest(CU) |>
group_by(CU) |>
# Number of times each country appear.
count() |>
ungroup() |>
mutate("percentage" = round(n/ sum(n) * 100,2),
"percentage" = paste(percentage, "%")) |>
mutate(cols = case_when(CU == "Lebanon" ~ "#B83A4B",
TRUE ~ "#2E2D29")) |>
ggplot(aes(x = reorder(CU,-n), y = n, fill = cols)) +
geom_col(show.legend = F) +
scale_fill_manual(values = c("#2E2D29","#B83A4B")) +
geom_text(aes(label = percentage),size = 1.5, colour = "white",vjust = 2.5, hjust = 0.5) +
# Logo insert
annotation_custom(logo, xmin=3.5, xmax=6, ymin=11,ymax =35) +
labs(x = "Countries", y = "Number of publications",
title = "Participation of Nations in Upper Cretaceous Fossil Research in Lebanon",
subtitle = "WoS, Google Scholar, and Scopus Data",
caption = "The bar chart depicts the national-level contributions to publications concerning
Upper Cretaceous Lebanese Lagerstätten")+
theme_classic() +
theme(axis.text.y = element_text(),
axis.text.x = element_text(angle = 45,hjust = 1,vjust = 1),
axis.title = element_text(face = "bold"),
plot.title = element_text(face = "bold"))This section looks at the prevalence of keywords used in publications from WoS.
# Fetch data
# Doc_ID <-
# con_bibmet |> tbl("BestResAddr") |>
# inner_join(WoS |> select(UT), by = "UT", copy = T) |>
# collect() |>
# pull(Doc_id) |>
# unique()
# keywords_auth <-
# con_bibmet |>
# tbl("Keyword") |>
# filter(Doc_id %in% !!Doc_ID) |>
# collect() |>
# mutate(Keyword = case_when(Keyword == "Hakel" ~ "Haqel", TRUE ~ Keyword))
keywords_auth <- openxlsx::read.xlsx(xlsxFile = "keywords_auth.xlsx")
keywords_auth_list <-
keywords_auth |>
group_by(Doc_id) |>
summarise(keywords = paste(Keyword, collapse = "; "))
# World-cloud
text_corpus <- keywords_auth$Keyword |>
VectorSource() |>
Corpus()
# Word Count
word_freq <-
keywords_auth |>
group_by(Keyword) |>
count()
# filter(n > 1)
# Plot
wordcloud(
words = word_freq$Keyword,
freq = word_freq$n,
min.freq = 1,
scale = c(2, 0.5),max.words = 100,
colors = brewer.pal(8, "Dark2")
)# keywords_nodes <- keywords_auth |>
# group_by(Keyword) |>
# summarise(p = n(), p_sqrt = sqrt(n()), .groups = "drop") |>
# # filter(p >= 20) |>
# arrange(desc(p)) |>
# rowid_to_column("id") |>
# rename(Label = Keyword)
#
# keywords_edges <- keywords_nodes |>
# mutate(source = id) |>
# inner_join(keywords_auth, by = c("Label" = "Keyword"), relationship = "many-to-many") |>
# select(source, Doc_id) |>
# inner_join(keywords_auth, by = "Doc_id", relationship = "many-to-many") |>
# inner_join(keywords_nodes, by = c("Keyword" = "Label"), relationship = "many-to-many") |>
# mutate(target = id) |>
# filter(source < target) |>
# group_by(source, target) |>
# summarise(weight = n(), .groups = "drop")
# write.csv(keywords_nodes, "author_keywords_nodes.csv", row.names = FALSE)
# write.csv(keywords_edges, "author_keywords_edges.csv", row.names = FALSE)This sections examines the primary languages used in publications on Upper Cretaceous Lebanese Lagerstätten.
LBLS |>
group_by(Language) |>
count() |>
ggplot(aes(x = reorder(Language,-n), y = n)) +
geom_col(show.legend = F, color = "#2E2D29",fill = "white") +
labs(x = "", y = "Number of publications",
title = "Primary document language",
subtitle = "WoS, Google Scholar, and Scopus Data",
caption = "") +
theme_classic() +
theme(axis.text.y = element_text(),
axis.text.x = element_text(angle = 45,hjust = 1,vjust = 1),
plot.title = element_text(face = "bold"),
aspect.ratio = 1/2)# Abstracts in two more languages.
WosGs |>
filter(!is.na(OA)) |>
select(LA,OA) |>
mutate(OA = case_when(OA == "German; French" ~ "German", TRUE ~ OA)) |>
group_by(LA,OA) |>
count() |>
rowwise() |>
mutate(Languages = paste(sort(c(LA,OA)), collapse = "-")) |>
group_by(Languages) |>
summarize(total_count = sum(n)) |>
ggplot(aes(x = reorder(Languages,-total_count), y = total_count, fill = Languages)) +
geom_bar(stat = "identity",position = "dodge") +
scale_fill_manual(values = c("#D50032FF", "#F6BE00FF", "#00573FFF", "#010101FF")) +
scale_color_manual(values = c("#D50032FF", "#F6BE00FF", "#00573FFF", "#010101FF")) +
labs(x = "", y = "Number of publications",
title = "Articles with abstracts in more than one language",
subtitle = "Data from Google Scholar: N = 20", fill = "") +
coord_flip() +
theme_classic() +
theme(axis.text.y = element_text(),
axis.text.x = element_text(angle = 0,hjust = 1,vjust = 1),
axis.title = element_text(face = "bold"),
plot.title = element_text(face = "bold"),
aspect.ratio = 1/2)Exploration of main text language shows that publications on Upper Cretaceous Lebanese Lagerstätten are mainly in the English language followed by French, German, and Italian.
Publications from Google Scholar with abstracts in two languages. Abstracts in English-French and English-Italian share the same place, followed by English-German and French-German.
VOSviewer was used to construct and visualize a co-authorship network using countries as the unit of analysis based on Web of Science Data.
knitr::include_graphics("copublishing_network.png") Highlighting network cluster involving Lebanon.
knitr::include_graphics("lebanon_cluster_network.png") This section explores the clade and phyla under investigation in each publication record. Our results show that the overwhelming amount of published work have been on vertebrae animals followed by invertebrates, plants, and algae. A clade-level break-down of our data show that among vertebrates, teleost fish and cartilaginous fishes have been worked on the most. Among invertebrates, arthropods and molluscs have been extensively investigated from the Lebanese Lagersätten.
# Major groups
LBLS |>
group_by(Clade) |>
count(Clade) |>
filter(!is.na(Clade)) |>
ungroup() |>
mutate(prop = (n/sum(n)) * 100,
prop = round(prop,2)) |>
# Re-name algae
mutate(Clade = case_when(Clade == "Algae" ~ "Cercozoa (Algae)",
Clade == "Plant" ~ "Plantae", TRUE ~ Clade)) |>
ggplot(mapping = aes(x = "", y = n, fill = Clade)) +
geom_bar(stat = "identity",width = 1, colour = "black") +
coord_polar(theta = "y") +
geom_text(aes(label = paste(prop,"%")),
position = position_stack(vjust = 0.5), color = "white", size = 2.5)+
theme_minimal() +
scale_fill_manual(values = c("#000000","#153E7E","#446455FF","#AB2C43FF")) +
labs(x = NULL,
y = NULL,
title = "Number of publications by phyla",
subtitle = "Publications on the Lebanese Upper Cretaceous Lagerstätten") +
theme(plot.title = element_text(face = "bold"))# Sub-clades
LBLS |>
group_by(Group) |>
count() |>
filter(!is.na(Group)) |>
ggplot(mapping = aes(x = reorder(Group,-n), y = n, fill = Group)) +
geom_col(show.legend = F) +
scale_fill_manual(values = c("#558AA6FF","#B1740FFF","#D5006AFF","#08585AFF","#FFFD98FF","#9449D2FF","#BBBE64FF","#D7263DFF","#2b2b2b")) +
scale_color_manual(values = c("#558AA6FF","#B1740FFF","#D5006AFF","#08585AFF","#FFFD98FF","#9449D2FF","#BBBE64FF","#D7263DFF","#2b2b2b")) +
labs(y = "Number of publications",
title = "Number of publication by clade",fill = "") +
theme_bw() +
theme(axis.text.x = element_text(angle = 45,vjust = 1,hjust = 1),
axis.title = element_text(face = "bold"),
plot.title = element_text(face = "bold"),
aspect.ratio = 1/2) +
labs(x = NULL)# Alternative graph of sub-clades (faceted)
LBLS |>
group_by(Group,Clade) |>
count() |>
filter(!is.na(Group)) |>
ggplot(mapping = aes(x = "", y = n, fill = Group)) +
geom_bar(stat = "identity",width = 1, colour = "black") +
coord_polar(theta = "y") +
facet_grid(rows = . ~ Clade) +
labs(x = NULL, y = NULL, fill = "Clades") +
scale_fill_manual(values = c("#558AA6FF","#B1740FFF","#D5006AFF","#08585AFF","#FFFD98FF","#9449D2FF","#BBBE64FF","#D7263DFF","#2b2b2b")) +
scale_color_manual(values = c("#558AA6FF","#B1740FFF","#D5006AFF","#08585AFF","#FFFD98FF","#9449D2FF","#BBBE64FF","#D7263DFF","#2b2b2b")) +
theme(legend.position = "bottom")# Re-fetch the data from WoS.
# collaboration <-
# con_bibmet |> tbl("BestResAddr") |> select(-Org_type_code, -Org_type_correction) |>
# inner_join(con_bibmet |> tbl("Lang_Doc") |> select("Doc_id","Language"), by = "Doc_id") |>
# inner_join(WoS |> select(UT), by = "UT", copy = T) |>
# collect() |>
# # Determine the number of countries and languages per UT.
# group_by(UT) |>
# reframe(CU = paste(Country_name, collapse = "; "),
# LA = paste(Language))M.B. would like to acknowledge Markus Skyttner (Redpill Linpro) for discussions on customized layout templates with Quarto.
George, H., Bazzi, M., Hossny, T.E., Ashraf, N., Abi Saad, P. and Clements, T. 2024. The famous fish beds of Lebanon: the Upper Cretaceous Lagerstätten of Haqel, Hjoula, Nammoura, and Sahel Aalma. Geological Society, London, Special Publications.
Skyttner, M. kth-quarto
# Lebanese publication list
lbls_xlsx <- LBLS |> writexl::write_xlsx(path = "lbls.xlsx")