Title: | Create Visuals for Publication |
Version: | 0.3.3 |
Description: | A set of functions to aid in the production of visuals in ggplot2. |
License: | LGPL-2 | LGPL-2.1 | LGPL-3 [expanded from: LGPL (≥ 2)] |
URL: | https://efinite.github.io/utile.visuals/ |
BugReports: | https://github.com/efinite/utile.visuals/issues |
Encoding: | UTF-8 |
Depends: | R (≥ 3.4.0) |
Imports: | dplyr, ggplot2 (≥ 0.3.4), gridExtra, purrr |
Suggests: | survival, broom, grid |
RoxygenNote: | 7.2.3 |
NeedsCompilation: | no |
Packaged: | 2023-01-24 00:42:07 UTC; Eric |
Author: | Eric Finnesgard [aut, cre] |
Maintainer: | Eric Finnesgard <efinite@outlook.com> |
Repository: | CRAN |
Date/Publication: | 2023-01-24 01:00:02 UTC |
Append a ggplot2 table to the bottom of a ggplot2 plot
Description
Aligns axes and combines a ggplot2 plot and table into a single plot. Can handle legends.
Usage
append_table(
plot = NULL,
table = NULL,
plot.height = 1,
table.height = 0.1,
plot.width = 1,
extract.legend = TRUE,
legend.width = 0.2,
legend.offset = -15
)
Arguments
plot |
Required. ggplot2::ggplot() object. If a legend is present, it will be extracted. |
table |
Required. ggplot2::ggplot object. If a legend is present, it will be removed and ignored. |
plot.height |
Optional. Numeric. Height of plot relative to table. Defaults to 1. |
table.height |
Optional. Numeric. Height of table relative to plot. Defaults to 0.1. |
plot.width |
Optional. Numeric. Width of plot relative to legend. Ignored if no legend present in plot. Defaults to 1. |
extract.legend |
Optional. Logical. Indicates whether to extract the legend from the plot and reinsert it adjacent to the final combined plot. May be undesired if legend already embedded within the plot area. Defaults to TRUE. |
legend.width |
Optional. Numeric. Width of legend relative to plot. Ignored if no legend present in plot or 'extract.legend'=FALSE. Defaults 0.2. |
legend.offset |
Optional. Numeric. Vertical offset of legend. Used to raise or lower. Ignored if no legend present in plot or 'extract.legend'=FALSE. Defaults to -15. |
Value
A ggplot2 tableGrob object. Use grid::grid.draw() to open in RStudio viewer. Works with ggplot2::ggsave() out of the box.
Note
To ensure proper alignment, double check that both plots use the same scale and breaks!
Examples
library(survival)
library(ggplot2)
library(broom) # tidy() model data
library(grid) # grid.draw() finished plot
# Data with group names specified
data_diabetic <- diabetic
data_diabetic$trt <- as.factor(data_diabetic$trt)
levels(data_diabetic$trt) <- c('None', 'Laser')
# Survival Model
fit <- survfit(Surv(time, status) ~ trt, data = data_diabetic)
# Kaplan Meier (KM) Plot
plot_km <- ggplot(
data = tidy(fit),
mapping = aes(x = time, y = estimate)
) +
geom_step(aes(color = strata)) +
geom_stepconfint(aes(ymin = conf.low, ymax = conf.high, fill = strata), alpha = 0.3) +
coord_cartesian(c(0, 50)) + # Note scale set here!
scale_x_continuous(expand = c(0.02,0)) +
labs(x = 'Time', y = 'Freedom From Event') +
scale_color_manual(
values = c('#d83641', '#1A45A7'),
name = 'Treatment',
labels = c('Laser', 'None'),
aesthetics = c('colour', 'fill')) +
theme_basic()
# Risk Table
tbl_risk <- ggrisktable(fit, c(0, 10, 20, 30, 40, 50)) +
coord_cartesian(c(0, 50)) +
scale_x_continuous(expand = c(0.02,0)) +
theme_risk()
# Combine KM plot and risk table
plot_cmbd <- append_table(
plot = plot_km,
table = tbl_risk
)
# Draw in RStudio viewer
grid.newpage()
grid.draw(plot_cmbd)
Step function confidence intervals for ggplot2
Description
Produces a step function confidence interval for survival curves.
Usage
geom_stepconfint(
mapping = NULL,
data = NULL,
stat = "identity",
position = "identity",
na.rm = FALSE,
...
)
Arguments
mapping |
Aesthetic mappings with aes() function. Like geom_ribbon(), you must provide columns for x, ymin (lower limit), ymax (upper limit). |
data |
The data to be displayed in this layer. Can inherit from ggplot parent. |
stat |
The statistical transformation to use on the data for this layer, as a string. Defaults to 'identity'. |
position |
Position adjustment, either as a string, or the result of a call to a position adjustment function. |
na.rm |
If FALSE, the default, missing values are removed with a warning. If TRUE, missing values are silently removed. |
... |
Optional. Any other ggplot geom_ribbon() arguments. |
Note
Adapted from the survminer package <https://github.com/kassambara/survminer>.
Examples
library(survival)
library(broom)
library(ggplot2)
fit <- survfit(Surv(time, status) ~ trt, data = diabetic)
fit <- survfit0(fit) # connect origin
ggplot(
data = tidy(fit),
mapping = aes(x = time, y = estimate)
) +
geom_step(aes(color = strata)) +
geom_stepconfint(aes(ymin = conf.low, ymax = conf.high, fill = strata), alpha = 0.3) +
coord_cartesian(c(0, 50)) +
scale_x_continuous(expand = c(0.02,0)) +
labs(x = 'Time', y = 'Freedom From Event') +
scale_color_manual(
values = c('#d83641', '#1A45A7'),
name = 'Treatment',
labels = c('None', 'Laser'),
aesthetics = c('colour', 'fill')) +
theme_basic()
Create a ggplot2 table showing the number at risk
Description
A simple wrapper function which calculates the numbers at risk for a survival model and a given set of time points then creates a ggplot2 table with them.
Usage
ggrisktable(
fit = NULL,
times = NULL,
text.color = "black",
strata.order = NULL
)
Arguments
fit |
Required. survival::survfit() object. |
times |
Required. Numeric. One or more time points to calculate the number at risk for. |
text.color |
Optional. Character. Color of text within table. Defaults to 'black'. |
strata.order |
Optional. Character. Ordered names of strata factor levels. |
Value
An unformatted ggplot2 table showing the number at risk.
Examples
library(survival)
fit <- survfit(Surv(time, status) ~ trt, data = diabetic)
ggrisktable(
fit = fit,
times = c(0, 10, 20, 30, 40, 50),
strata.order = c('0', '1')
) + theme_risk()
Add a panel border to a ggplot2 plot
Description
A simple ggplot2
theme which replaces the axis lines with
a bordered panel.
Usage
panel_border(base_size = 12, base_color = NULL)
Arguments
base_size |
A numeric. Base size. Used to calculate line size and spacing. |
base_color |
A character. Base color for lines. |
Note
This should be placed after the primary theme for the plot.
Examples
library(ggplot2)
ggplot(datasets::mtcars, aes(x = wt, y = hp, color = as.factor(cyl))) +
geom_point() +
facet_wrap(~as.logical(am)) +
theme_basic() +
panel_border()
Minimalist theme for ggplot2
Description
A minimalist ggplot2
theme which removes most background elements and
lines.
Usage
theme_basic(
base_size = 12,
base_family = NULL,
base_color = "black",
base_line_size = base_size/12,
base_rect_size = base_size/12
)
Arguments
base_size |
A numeric. Base font size. |
base_family |
A numeric. Base font family. |
base_color |
A character. Base color for lines and text. |
base_line_size |
A numeric. Base line element size. |
base_rect_size |
A numeric. Base rectangle element size. |
Note
Recommend exporting as PNG or TIFF to preserve background transparency.
Examples
library(ggplot2)
ggplot(datasets::mtcars, aes(x = wt, y = hp, color = as.factor(cyl))) +
geom_point() +
theme_basic()
Minimalist risk table theme for ggplot2
Description
A minimalist ggplot2
theme which removes most background elements and
lines.
Usage
theme_risk(
base_size = 12,
base_family = NULL,
base_color = "black",
base_line_size = base_size/12,
base_rect_size = base_size/12
)
Arguments
base_size |
A numeric. Base font size. |
base_family |
A numeric. Base font family. |
base_color |
A character. Base color for lines and text. |
base_line_size |
A numeric. Base line element size. |
base_rect_size |
A numeric. Base rectangle element size. |
Note
Recommend exporting as PNG or TIFF to preserve background transparency.