updated docs + boxplot

This commit is contained in:
Andreas Gammelgaard Damsbo 2025-03-19 13:10:56 +01:00
commit 111393c73f
No known key found for this signature in database
23 changed files with 908 additions and 306 deletions

View file

@ -33,7 +33,7 @@ plot.tbl_regression <- function(x,
# gtsummary:::check_scalar_logical(remove_reference_rows)
df_coefs <- x$table_body
browser()
if (isTRUE(remove_header_rows)) {
df_coefs <- df_coefs |> dplyr::filter(!header_row %in% TRUE)
}
@ -48,22 +48,16 @@ plot.tbl_regression <- function(x,
if (plot_ref == TRUE){
df_coefs[df_coefs$var_type == "categorical" & is.na(df_coefs$reference_row),"estimate"] <- if (x$inputs$exponentiate) 1 else 0}
df_coefs |>
p <- df_coefs |>
ggstats::ggcoef_plot(exponentiate = x$inputs$exponentiate, ...)
if (x$inputs$exponentiate){
p <- symmetrical_scale_x_log10(p)
}
p
}
# default_parsing(mtcars) |> lapply(class)
#
# purrr::imap(mtcars,\(.x,.i){
# if (.i %in% c("vs","am","gear","carb")){
# as.factor(.x)
# } else .x
# }) |> dplyr::bind_cols()
#
#
#' Wrapper to pivot gtsummary table data to long for plotting
#'
#' @param list a custom regression models list
@ -103,3 +97,47 @@ merge_long <- function(list, model.names) {
l_merged
}
#' Easily round log scale limits for nice plots
#'
#' @param data data
#' @param fun rounding function (floor/ceiling)
#' @param ... ignored
#'
#' @returns numeric vector
#' @export
#'
#' @examples
#' limit_log(-.1,floor)
#' limit_log(.1,ceiling)
#' limit_log(-2.1,ceiling)
#' limit_log(2.1,ceiling)
limit_log <- function(data,fun,...){
fun(10^-floor(data)*10^data)/10^-floor(data)
}
#' Ensure symmetrical plot around 1 on a logarithmic x scale for ratio plots
#'
#' @param plot ggplot2 plot
#' @param breaks breaks used and mirrored
#' @param ... ignored
#'
#' @returns ggplot2 object
#' @export
#'
symmetrical_scale_x_log10 <- function(plot,breaks=c(1,2,3,5,10),...){
rx <- ggplot2::layer_scales(plot)$x$get_limits()
x_min <- floor(10*rx[1])/10
x_max <- ceiling(10*rx[2])/10
rx_min <- limit_log(rx[1],floor)
rx_max <- limit_log(rx[2],ceiling)
max_abs_x <- max(abs(c(x_min,x_max)))
ticks <- log10(breaks)+(ceiling(max_abs_x)-1)
browser()
plot + ggplot2::scale_x_log10(limits=c(rx_min,rx_max),breaks=create_log_tics(10^ticks[ticks<=max_abs_x]))
}