if (FALSE) {
# Example 1: Using built-in forest_data
library(dplyr)
library(evanverse)
# Load example data
data("forest_data")
# Filter to single-model data (rows without est_2)
df <- forest_data %>%
filter(is.na(est_2)) %>%
filter(!is.na(est)) # Remove header rows
# Prepare display data
plot_data <- df %>%
mutate(
` ` = strrep(" ", 20),
`OR (95% CI)` = sprintf("%.2f (%.2f-%.2f)", est, lower, upper),
`P` = ifelse(pval < 0.001, "<0.001", sprintf("%.3f", pval))
) %>%
select(Variable = variable, ` `, `OR (95% CI)`, `P`)
# Create plot
p <- plot_forest(
data = plot_data,
est = list(df$est),
lower = list(df$lower),
upper = list(df$upper),
ci_column = 2,
ref_line = 1
)
print(p)
# Example 2: Multi-model comparison
df_multi <- forest_data %>%
filter(!is.na(est_2)) # Multi-model rows
plot_data_multi <- df_multi %>%
mutate(
` ` = strrep(" ", 20),
`Model 1` = sprintf("%.2f (%.2f-%.2f)", est, lower, upper),
`Model 2` = sprintf("%.2f (%.2f-%.2f)", est_2, lower_2, upper_2),
`Model 3` = sprintf("%.2f (%.2f-%.2f)", est_3, lower_3, upper_3)
) %>%
select(Variable = variable, ` `, `Model 1`, `Model 2`, `Model 3`)
p <- plot_forest(
data = plot_data_multi,
est = list(df_multi$est, df_multi$est_2, df_multi$est_3),
lower = list(df_multi$lower, df_multi$lower_2, df_multi$lower_3),
upper = list(df_multi$upper, df_multi$upper_2, df_multi$upper_3),
ci_column = 2,
ref_line = 1
)
# Example 3: Customized styling
p <- plot_forest(
data = plot_data,
est = list(df$est),
lower = list(df$lower),
upper = list(df$upper),
ci_column = 2,
xlim = c(0.5, 3),
arrow_lab = c("Lower Risk", "Higher Risk"),
align_left = 1,
align_center = c(2, 3, 4),
bold_pvalue_cols = 4,
background_style = "zebra"
)
# Example 4: Save to files
plot_forest(
data = plot_data,
est = list(df$est),
lower = list(df$lower),
upper = list(df$upper),
ci_column = 2,
save_plot = TRUE,
filename = "forest_plot",
save_formats = c("png", "pdf")
)
}
Run the code above in your browser using DataLab