mirror of
https://github.com/msberends/AMR.git
synced 2024-12-27 10:06:12 +01:00
ggplot2_rsi fix
This commit is contained in:
parent
cb0d74a4f0
commit
d049ec9e69
@ -20,7 +20,7 @@
|
|||||||
#'
|
#'
|
||||||
#' Use these functions to create bar plots for antimicrobial resistance analysis. All functions rely on internal \code{\link[ggplot2]{ggplot}} functions.
|
#' Use these functions to create bar plots for antimicrobial resistance analysis. All functions rely on internal \code{\link[ggplot2]{ggplot}} functions.
|
||||||
#' @param data a \code{data.frame} with column(s) of class \code{"rsi"} (see \code{\link{as.rsi}})
|
#' @param data a \code{data.frame} with column(s) of class \code{"rsi"} (see \code{\link{as.rsi}})
|
||||||
#' @param position position adjustment of bars, either \code{"stack"} (default when \code{fun} is \code{\link{portion_df}}) or \code{"dodge"} (default when \code{fun} is \code{\link{count_df}})
|
#' @param position position adjustment of bars, either \code{"fill"}, \code{"stack"} (default when \code{fun} is \code{\link{portion_df}}) or \code{"dodge"} (default when \code{fun} is \code{\link{count_df}})
|
||||||
#' @param x variable to show on x axis, either \code{"Antibiotic"} (default) or \code{"Interpretation"} or a grouping variable
|
#' @param x variable to show on x axis, either \code{"Antibiotic"} (default) or \code{"Interpretation"} or a grouping variable
|
||||||
#' @param fill variable to categorise using the plots legend, either \code{"Antibiotic"} (default) or \code{"Interpretation"} or a grouping variable
|
#' @param fill variable to categorise using the plots legend, either \code{"Antibiotic"} (default) or \code{"Interpretation"} or a grouping variable
|
||||||
#' @param facet variable to split plots by, either \code{"Interpretation"} (default) or \code{"Antibiotic"} or a grouping variable
|
#' @param facet variable to split plots by, either \code{"Interpretation"} (default) or \code{"Antibiotic"} or a grouping variable
|
||||||
@ -56,7 +56,6 @@
|
|||||||
#' df <- septic_patients[, c("amox", "nitr", "fosf", "trim", "cipr")]
|
#' df <- septic_patients[, c("amox", "nitr", "fosf", "trim", "cipr")]
|
||||||
#' ggplot(df) +
|
#' ggplot(df) +
|
||||||
#' geom_rsi() +
|
#' geom_rsi() +
|
||||||
#' facet_rsi() +
|
|
||||||
#' scale_y_percent() +
|
#' scale_y_percent() +
|
||||||
#' scale_rsi_colours() +
|
#' scale_rsi_colours() +
|
||||||
#' theme_rsi()
|
#' theme_rsi()
|
||||||
@ -87,12 +86,12 @@
|
|||||||
#' ggplot_rsi() + scale_fill_viridis_d()
|
#' ggplot_rsi() + scale_fill_viridis_d()
|
||||||
#'
|
#'
|
||||||
#'
|
#'
|
||||||
#' # it also supports groups (don't forget to use the group on `x` or `facet`):
|
#' # it also supports groups (don't forget to use the group var on `x` or `facet`):
|
||||||
#' septic_patients %>%
|
#' septic_patients %>%
|
||||||
#' select(hospital_id, amox, nitr, fosf, trim, cipr) %>%
|
#' select(hospital_id, amox, nitr, fosf, trim, cipr) %>%
|
||||||
#' group_by(hospital_id) %>%
|
#' group_by(hospital_id) %>%
|
||||||
#' ggplot_rsi(x = "hospital_id",
|
#' ggplot_rsi(x = hospital_id,
|
||||||
#' facet = "Antibiotic",
|
#' facet = Antibiotic,
|
||||||
#' nrow = 1) +
|
#' nrow = 1) +
|
||||||
#' labs(title = "AMR of Anti-UTI Drugs Per Hospital",
|
#' labs(title = "AMR of Anti-UTI Drugs Per Hospital",
|
||||||
#' x = "Hospital")
|
#' x = "Hospital")
|
||||||
@ -101,8 +100,8 @@
|
|||||||
#' septic_patients %>%
|
#' septic_patients %>%
|
||||||
#' # create new bacterial ID's, with all CoNS under the same group (Becker et al.)
|
#' # create new bacterial ID's, with all CoNS under the same group (Becker et al.)
|
||||||
#' mutate(mo = as.mo(mo, Becker = TRUE)) %>%
|
#' mutate(mo = as.mo(mo, Becker = TRUE)) %>%
|
||||||
#' # filter on top 2 bacterial ID's
|
#' # filter on top three bacterial ID's
|
||||||
#' filter(mo %in% top_freq(freq(.$mo), 2)) %>%
|
#' filter(mo %in% top_freq(freq(.$mo), 3)) %>%
|
||||||
#' # determine first isolates
|
#' # determine first isolates
|
||||||
#' mutate(first_isolate = first_isolate(.,
|
#' mutate(first_isolate = first_isolate(.,
|
||||||
#' col_date = "date",
|
#' col_date = "date",
|
||||||
@ -110,17 +109,18 @@
|
|||||||
#' col_mo = "mo")) %>%
|
#' col_mo = "mo")) %>%
|
||||||
#' # filter on first isolates
|
#' # filter on first isolates
|
||||||
#' filter(first_isolate == TRUE) %>%
|
#' filter(first_isolate == TRUE) %>%
|
||||||
#' # join the `microorganisms` data set
|
#' # get short MO names (like "E. coli")
|
||||||
#' left_join_microorganisms() %>%
|
#' mutate(mo = mo_shortname(mo, Becker = TRUE)) %>%
|
||||||
#' # select full name and some antiseptic drugs
|
#' # select this short name and some antiseptic drugs
|
||||||
#' select(mo = fullname,
|
#' select(mo, cfur, gent, cipr) %>%
|
||||||
#' cfur, gent, cipr) %>%
|
|
||||||
#' # group by MO
|
#' # group by MO
|
||||||
#' group_by(mo) %>%
|
#' group_by(mo) %>%
|
||||||
#' # plot the thing, putting MOs on the facet
|
#' # plot the thing, putting MOs on the facet
|
||||||
#' ggplot_rsi(x = "Antibiotic",
|
#' ggplot_rsi(x = Antibiotic,
|
||||||
#' facet = "mo") +
|
#' facet = mo,
|
||||||
#' labs(title = "AMR of Top Two Microorganisms In Blood Culture Isolates",
|
#' translate_ab = FALSE,
|
||||||
|
#' nrow = 1) +
|
||||||
|
#' labs(title = "AMR of Top Three Microorganisms In Blood Culture Isolates",
|
||||||
#' subtitle = "Only First Isolates, CoNS grouped according to Becker et al. (2014)",
|
#' subtitle = "Only First Isolates, CoNS grouped according to Becker et al. (2014)",
|
||||||
#' x = "Microorganisms")
|
#' x = "Microorganisms")
|
||||||
#' }
|
#' }
|
||||||
@ -144,6 +144,28 @@ ggplot_rsi <- function(data,
|
|||||||
stop("`fun` must be portion_df or count_df")
|
stop("`fun` must be portion_df or count_df")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
x <- x[1]
|
||||||
|
facet <- facet[1]
|
||||||
|
|
||||||
|
# we work with aes_string later on
|
||||||
|
x_deparse <- deparse(substitute(x))
|
||||||
|
if (x_deparse != "x") {
|
||||||
|
x <- x_deparse
|
||||||
|
}
|
||||||
|
if (x %like% '".*"') {
|
||||||
|
x <- substr(x, 2, nchar(x) - 1)
|
||||||
|
}
|
||||||
|
facet_deparse <- deparse(substitute(facet))
|
||||||
|
if (facet_deparse != "facet") {
|
||||||
|
facet <- facet_deparse
|
||||||
|
}
|
||||||
|
if (facet %like% '".*"') {
|
||||||
|
facet <- substr(facet, 2, nchar(facet) - 1)
|
||||||
|
}
|
||||||
|
if (facet %in% c("NULL", "")) {
|
||||||
|
facet <- NULL
|
||||||
|
}
|
||||||
|
|
||||||
p <- ggplot2::ggplot(data = data) +
|
p <- ggplot2::ggplot(data = data) +
|
||||||
geom_rsi(position = position, x = x, fill = fill, translate_ab = translate_ab, fun = fun, ...) +
|
geom_rsi(position = position, x = x, fill = fill, translate_ab = translate_ab, fun = fun, ...) +
|
||||||
theme_rsi()
|
theme_rsi()
|
||||||
@ -190,6 +212,16 @@ geom_rsi <- function(position = NULL,
|
|||||||
}
|
}
|
||||||
|
|
||||||
x <- x[1]
|
x <- x[1]
|
||||||
|
|
||||||
|
# we work with aes_string later on
|
||||||
|
x_deparse <- deparse(substitute(x))
|
||||||
|
if (x_deparse != "x") {
|
||||||
|
x <- x_deparse
|
||||||
|
}
|
||||||
|
if (x %like% '".*"') {
|
||||||
|
x <- substr(x, 2, nchar(x) - 1)
|
||||||
|
}
|
||||||
|
|
||||||
if (tolower(x) %in% tolower(c('ab', 'antibiotic', 'abx', 'antibiotics'))) {
|
if (tolower(x) %in% tolower(c('ab', 'antibiotic', 'abx', 'antibiotics'))) {
|
||||||
x <- "Antibiotic"
|
x <- "Antibiotic"
|
||||||
} else if (tolower(x) %in% tolower(c('SIR', 'RSI', 'interpretation', 'interpretations', 'result'))) {
|
} else if (tolower(x) %in% tolower(c('SIR', 'RSI', 'interpretation', 'interpretations', 'result'))) {
|
||||||
@ -209,6 +241,16 @@ geom_rsi <- function(position = NULL,
|
|||||||
facet_rsi <- function(facet = c("Interpretation", "Antibiotic"), nrow = NULL) {
|
facet_rsi <- function(facet = c("Interpretation", "Antibiotic"), nrow = NULL) {
|
||||||
|
|
||||||
facet <- facet[1]
|
facet <- facet[1]
|
||||||
|
|
||||||
|
# we work with aes_string later on
|
||||||
|
facet_deparse <- deparse(substitute(facet))
|
||||||
|
if (facet_deparse != "facet") {
|
||||||
|
facet <- facet_deparse
|
||||||
|
}
|
||||||
|
if (facet %like% '".*"') {
|
||||||
|
facet <- substr(facet, 2, nchar(facet) - 1)
|
||||||
|
}
|
||||||
|
|
||||||
if (tolower(facet) %in% tolower(c('SIR', 'RSI', 'interpretation', 'interpretations', 'result'))) {
|
if (tolower(facet) %in% tolower(c('SIR', 'RSI', 'interpretation', 'interpretations', 'result'))) {
|
||||||
facet <- "Interpretation"
|
facet <- "Interpretation"
|
||||||
} else if (tolower(facet) %in% tolower(c('ab', 'antibiotic', 'abx', 'antibiotics'))) {
|
} else if (tolower(facet) %in% tolower(c('ab', 'antibiotic', 'abx', 'antibiotics'))) {
|
||||||
|
@ -142,12 +142,13 @@ mo_shortname <- function(x, Becker = FALSE, Lancefield = FALSE, language = NULL)
|
|||||||
res2_fullname <- mo_fullname(res2)
|
res2_fullname <- mo_fullname(res2)
|
||||||
res2_fullname[res2_fullname %like% "\\(CoNS\\)"] <- "CoNS"
|
res2_fullname[res2_fullname %like% "\\(CoNS\\)"] <- "CoNS"
|
||||||
res2_fullname[res2_fullname %like% "\\(CoPS\\)"] <- "CoPS"
|
res2_fullname[res2_fullname %like% "\\(CoPS\\)"] <- "CoPS"
|
||||||
res2_fullname <- gsub("Streptococcus (group|gruppe|Gruppe|groep|grupo) (.)",
|
res2_fullname <- gsub("Streptococcus (group|Gruppe|gruppe|groep|grupo|gruppo|groupe) (.)",
|
||||||
"G\\2S",
|
"G\\2S",
|
||||||
res2_fullname) # turn "Streptococcus group A" and "Streptococcus grupo A" to "GAS"
|
res2_fullname) # turn "Streptococcus group A" and "Streptococcus grupo A" to "GAS"
|
||||||
res2_fullname[res2_fullname == mo_fullname(x)] <- paste0(substr(mo_genus(res2_fullname), 1, 1),
|
res2_fullname_vector <- res2_fullname[res2_fullname == mo_fullname(x)]
|
||||||
|
res2_fullname[res2_fullname == mo_fullname(x)] <- paste0(substr(mo_genus(res2_fullname_vector), 1, 1),
|
||||||
". ",
|
". ",
|
||||||
suppressWarnings(mo_species(res2_fullname)))
|
suppressWarnings(mo_species(res2_fullname_vector)))
|
||||||
if (sum(res1 == res2, na.rm = TRUE) > 0) {
|
if (sum(res1 == res2, na.rm = TRUE) > 0) {
|
||||||
res1[res1 == res2] <- paste0(substr(mo_genus(res1[res1 == res2]), 1, 1),
|
res1[res1 == res2] <- paste0(substr(mo_genus(res1[res1 == res2]), 1, 1),
|
||||||
". ",
|
". ",
|
||||||
|
@ -28,7 +28,7 @@ theme_rsi()
|
|||||||
\arguments{
|
\arguments{
|
||||||
\item{data}{a \code{data.frame} with column(s) of class \code{"rsi"} (see \code{\link{as.rsi}})}
|
\item{data}{a \code{data.frame} with column(s) of class \code{"rsi"} (see \code{\link{as.rsi}})}
|
||||||
|
|
||||||
\item{position}{position adjustment of bars, either \code{"stack"} (default when \code{fun} is \code{\link{portion_df}}) or \code{"dodge"} (default when \code{fun} is \code{\link{count_df}})}
|
\item{position}{position adjustment of bars, either \code{"fill"}, \code{"stack"} (default when \code{fun} is \code{\link{portion_df}}) or \code{"dodge"} (default when \code{fun} is \code{\link{count_df}})}
|
||||||
|
|
||||||
\item{x}{variable to show on x axis, either \code{"Antibiotic"} (default) or \code{"Interpretation"} or a grouping variable}
|
\item{x}{variable to show on x axis, either \code{"Antibiotic"} (default) or \code{"Interpretation"} or a grouping variable}
|
||||||
|
|
||||||
@ -75,7 +75,6 @@ ggplot(septic_patients \%>\% select(amox, nitr, fosf, trim, cipr)) +
|
|||||||
df <- septic_patients[, c("amox", "nitr", "fosf", "trim", "cipr")]
|
df <- septic_patients[, c("amox", "nitr", "fosf", "trim", "cipr")]
|
||||||
ggplot(df) +
|
ggplot(df) +
|
||||||
geom_rsi() +
|
geom_rsi() +
|
||||||
facet_rsi() +
|
|
||||||
scale_y_percent() +
|
scale_y_percent() +
|
||||||
scale_rsi_colours() +
|
scale_rsi_colours() +
|
||||||
theme_rsi()
|
theme_rsi()
|
||||||
@ -106,12 +105,12 @@ septic_patients \%>\%
|
|||||||
ggplot_rsi() + scale_fill_viridis_d()
|
ggplot_rsi() + scale_fill_viridis_d()
|
||||||
|
|
||||||
|
|
||||||
# it also supports groups (don't forget to use the group on `x` or `facet`):
|
# it also supports groups (don't forget to use the group var on `x` or `facet`):
|
||||||
septic_patients \%>\%
|
septic_patients \%>\%
|
||||||
select(hospital_id, amox, nitr, fosf, trim, cipr) \%>\%
|
select(hospital_id, amox, nitr, fosf, trim, cipr) \%>\%
|
||||||
group_by(hospital_id) \%>\%
|
group_by(hospital_id) \%>\%
|
||||||
ggplot_rsi(x = "hospital_id",
|
ggplot_rsi(x = hospital_id,
|
||||||
facet = "Antibiotic",
|
facet = Antibiotic,
|
||||||
nrow = 1) +
|
nrow = 1) +
|
||||||
labs(title = "AMR of Anti-UTI Drugs Per Hospital",
|
labs(title = "AMR of Anti-UTI Drugs Per Hospital",
|
||||||
x = "Hospital")
|
x = "Hospital")
|
||||||
@ -120,8 +119,8 @@ septic_patients \%>\%
|
|||||||
septic_patients \%>\%
|
septic_patients \%>\%
|
||||||
# create new bacterial ID's, with all CoNS under the same group (Becker et al.)
|
# create new bacterial ID's, with all CoNS under the same group (Becker et al.)
|
||||||
mutate(mo = as.mo(mo, Becker = TRUE)) \%>\%
|
mutate(mo = as.mo(mo, Becker = TRUE)) \%>\%
|
||||||
# filter on top 2 bacterial ID's
|
# filter on top three bacterial ID's
|
||||||
filter(mo \%in\% top_freq(freq(.$mo), 2)) \%>\%
|
filter(mo \%in\% top_freq(freq(.$mo), 3)) \%>\%
|
||||||
# determine first isolates
|
# determine first isolates
|
||||||
mutate(first_isolate = first_isolate(.,
|
mutate(first_isolate = first_isolate(.,
|
||||||
col_date = "date",
|
col_date = "date",
|
||||||
@ -129,17 +128,18 @@ septic_patients \%>\%
|
|||||||
col_mo = "mo")) \%>\%
|
col_mo = "mo")) \%>\%
|
||||||
# filter on first isolates
|
# filter on first isolates
|
||||||
filter(first_isolate == TRUE) \%>\%
|
filter(first_isolate == TRUE) \%>\%
|
||||||
# join the `microorganisms` data set
|
# get short MO names (like "E. coli")
|
||||||
left_join_microorganisms() \%>\%
|
mutate(mo = mo_shortname(mo, Becker = TRUE)) \%>\%
|
||||||
# select full name and some antiseptic drugs
|
# select this short name and some antiseptic drugs
|
||||||
select(mo = fullname,
|
select(mo, cfur, gent, cipr) \%>\%
|
||||||
cfur, gent, cipr) \%>\%
|
|
||||||
# group by MO
|
# group by MO
|
||||||
group_by(mo) \%>\%
|
group_by(mo) \%>\%
|
||||||
# plot the thing, putting MOs on the facet
|
# plot the thing, putting MOs on the facet
|
||||||
ggplot_rsi(x = "Antibiotic",
|
ggplot_rsi(x = Antibiotic,
|
||||||
facet = "mo") +
|
facet = mo,
|
||||||
labs(title = "AMR of Top Two Microorganisms In Blood Culture Isolates",
|
translate_ab = FALSE,
|
||||||
|
nrow = 1) +
|
||||||
|
labs(title = "AMR of Top Three Microorganisms In Blood Culture Isolates",
|
||||||
subtitle = "Only First Isolates, CoNS grouped according to Becker et al. (2014)",
|
subtitle = "Only First Isolates, CoNS grouped according to Becker et al. (2014)",
|
||||||
x = "Microorganisms")
|
x = "Microorganisms")
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user