| forest_plot {coveffectsplot} | R Documentation | 
Forest plot
Description
Produce forest plots to visualize covariate effects
Usage
forest_plot(
  data,
  facet_formula = "covname~paramname",
  xlabel = "",
  ylabel = "",
  x_facet_text_size = 13,
  y_facet_text_size = 13,
  x_facet_text_angle = 0,
  y_facet_text_angle = 0,
  x_facet_text_vjust = 0.5,
  y_facet_text_vjust = 0.5,
  x_facet_text_hjust = 0.5,
  y_facet_text_hjust = 0.5,
  x_facet_text_col = "black",
  y_facet_text_col = "black",
  xy_facet_text_bold = TRUE,
  x_label_text_size = 16,
  y_label_text_size = 16,
  legend_title_size = 12,
  break_ylabel = FALSE,
  y_label_text_width = 25,
  table_text_size = 7,
  table_text_colour_overwrite = FALSE,
  table_text_colour = "none",
  base_size = 22,
  theme_benrich = FALSE,
  table_title = "",
  table_title_size = 15,
  ref_legend_text = "",
  area_legend_text = "",
  interval_legend_text = "",
  interval_legend_title = "",
  shape_legend_title = "",
  legend_order = c("pointinterval", "ref", "area", "shape"),
  combine_area_ref_legend = TRUE,
  combine_interval_shape_legend = FALSE,
  legend_position = "top",
  show_ref_area = TRUE,
  ref_area = c(0.8, 1.25),
  ref_area_col = "#BEBEBE50",
  show_ref_value = TRUE,
  ref_value = 1,
  ref_value_col = "black",
  ref_value_size = 1,
  ref_value_linetype = "dashed",
  ref_value_by_panel = FALSE,
  ref_value_by_panel_data = NULL,
  interval_col = "blue",
  interval_size = 1,
  interval_fatten = 4,
  interval_linewidth = 1,
  interval_shape = "circle small",
  bsv_col = "red",
  bsv_shape = "circle small",
  bsv_text_id = c("BSV", "bsv", "IIV", "Bsv"),
  interval_bsv_text = "",
  strip_col = "#E5E5E5",
  paramname_shape = FALSE,
  paramname_color = FALSE,
  legend_shape_reverse = FALSE,
  legend_color_reverse = FALSE,
  facet_switch = c("both", "y", "x", "none"),
  facet_scales = c("fixed", "free_y", "free_x", "free"),
  facet_space = c("fixed", "free_x", "free_y", "free"),
  facet_labeller = "label_value",
  label_wrap_width = 55,
  facet_labeller_multiline = FALSE,
  strip_placement = c("inside", "outside"),
  strip_outline = TRUE,
  facet_spacing = 5.5,
  major_x_ticks = NULL,
  major_x_labels = NULL,
  minor_x_ticks = NULL,
  x_range = NULL,
  logxscale = FALSE,
  show_yaxis_gridlines = TRUE,
  show_xaxis_gridlines = TRUE,
  show_table_facet_strip = "none",
  table_facet_switch = c("both", "y", "x", "none"),
  show_table_yaxis_tick_label = FALSE,
  reserve_table_xaxis_label_space = TRUE,
  table_panel_border = TRUE,
  table_position = c("right", "below", "none"),
  plot_table_ratio = 4,
  vertical_dodge_height = 0.8,
  legend_space_x_mult = 1,
  legend_ncol_interval = 1,
  legend_ncol_shape = 1,
  plot_margin = c(5.5, 5.5, 5.5, 5.5),
  table_margin = c(5.5, 5.5, 5.5, 5.5),
  legend_margin = c(0, 0.1, -0.1, 0),
  parse_xlabel = FALSE,
  parse_ylabel = FALSE,
  plot_title = "\n",
  return_list = FALSE
)
Arguments
| data | Data to use. | 
| facet_formula | Facet formula. | 
| xlabel | X axis title. | 
| ylabel | Y axis title. | 
| x_facet_text_size | Facet text size X. | 
| y_facet_text_size | Facet text size Y. | 
| x_facet_text_angle | Facet text angle X. | 
| y_facet_text_angle | Facet text angle Y. | 
| x_facet_text_vjust | Facet text vertical justification. | 
| y_facet_text_vjust | Facet text vertical justification. | 
| x_facet_text_hjust | Facet text horizontal justification. | 
| y_facet_text_hjust | Facet text horizontal justification. | 
| x_facet_text_col | Facet text color default to black. | 
| y_facet_text_col | Facet text color default to black. | 
| xy_facet_text_bold | Bold Facet text. Logical TRUE FALSE. | 
| x_label_text_size | X axis labels size. | 
| y_label_text_size | Y axis labels size. | 
| legend_title_size | Legend title size if present. | 
| break_ylabel | Split Y axis labels into multiple lines. Logical FALSE TRUE. | 
| y_label_text_width | Number of characters to break Y axis labels. | 
| table_text_size | Table text size. | 
| table_text_colour_overwrite | Logical TRUE FALSE. | 
| table_text_colour | Table text color to be used and overwrites mapped color | 
| base_size | theme_bw base_size for the plot and table. | 
| theme_benrich | apply Benjamin Rich's theming. | 
| table_title | What text to use for table title (theme_benrich has a default). | 
| table_title_size | table title size. | 
| ref_legend_text | Reference legend text. | 
| area_legend_text | Area legend text. | 
| interval_legend_text | Pointinterval legend text. | 
| interval_legend_title | Pointinterval legend title defaults to empty. | 
| shape_legend_title | Shape legend title defaults to empty. | 
| legend_order | Legend order. A four-element vector with the following items ordered in your desired order: "pointinterval", "ref", "area", "shape". if an item is absent the legend will be omitted. | 
| combine_area_ref_legend | Combine reference and area legends if they share the same text? | 
| combine_interval_shape_legend | Combine interval and shape legends? | 
| legend_position | where to put the legend: "top", "bottom","right","none" | 
| show_ref_area | Show reference window? | 
| ref_area | Reference area. Two-element numeric vector multiplying the ref_value. | 
| ref_area_col | Reference area background color. | 
| show_ref_value | Show reference line? | 
| ref_value | X intercept of reference line. | 
| ref_value_col | Reference line color. | 
| ref_value_size | Reference line size. | 
| ref_value_linetype | Reference line linetype. | 
| ref_value_by_panel | The ref_value vary by panel TRUE or FALSE. | 
| ref_value_by_panel_data | if ref_value_by_panel is TRUE, data.frame to use for Reference (lines). | 
| interval_col | Point range color. One or Multiple values. | 
| interval_size | Point range size. Default to 1 | 
| interval_fatten | Point range fatten. Default to 4 | 
| interval_linewidth | Point range line width. Default to 1 | 
| interval_shape | Shape used for the Point Range. Default to "circle small". | 
| bsv_col | BSV pointinterval color. One value. | 
| bsv_shape | Shape used for the BSV Point Range. Default to "circle small". | 
| bsv_text_id | Text string(s) to identify BSV. Default to c("BSV","bsv","IIV","Bsv") | 
| interval_bsv_text | BSV legend text. | 
| strip_col | Strip background color. | 
| paramname_shape | Map symbol to parameter(s) name? TRUE or FALSE. | 
| paramname_color | Map color to parameter(s) name? TRUE or FALSE. | 
| legend_shape_reverse | TRUE or FALSE. | 
| legend_color_reverse | TRUE or FALSE. | 
| facet_switch | Facet switch to near axis. Possible values: "both", "y", "x", "none". | 
| facet_scales | Facet scales. Possible values: "free_y", "fixed", "free_x", "free". | 
| facet_space | Facet spaces. Possible values: "fixed", "free_x", "free_y", "free". | 
| facet_labeller | Facet Labeller. Default "label_value" any other valid 'facet_grid' labeller can be specified. | 
| label_wrap_width | How many characters before breaking the line. Numeric value. any other valid 'facet_grid' labeller can be specified. | 
| facet_labeller_multiline | break facet strips into multiple lines. Logical TRUE FALSE. | 
| strip_placement | Strip placement. Possible values: "inside", "outside". | 
| strip_outline | Draw rectangle around the Strip. Logical TRUE FALSE. | 
| facet_spacing | Control the space between facets in points. | 
| major_x_ticks | X axis major ticks. Numeric vector. | 
| major_x_labels | X axis labels. Character vector should be same length as major_x_ticks. | 
| minor_x_ticks | X axis minor ticks. Numeric vector. | 
| x_range | Range of X values. Two-element numeric vector. | 
| logxscale | X axis log scale. Logical TRUE FALSE. | 
| show_yaxis_gridlines | Draw the y axis gridlines. Logical TRUE FALSE. | 
| show_xaxis_gridlines | Draw the x axis gridlines. Logical TRUE FALSE. | 
| show_table_facet_strip | Possible values: "none", "both", "y", "x". | 
| table_facet_switch | Table facet switch to near axis. Possible values: "both", "y", "x", "none". | 
| show_table_yaxis_tick_label | Show table y axis ticks and labels? | 
| reserve_table_xaxis_label_space | keep space for the x axis label to keep alignment. | 
| table_panel_border | Draw the panel border for the table. Logical TRUE FALSE. | 
| table_position | Table position. Possible values: "right", "below", "none". | 
| plot_table_ratio | Plot-to-table ratio. Suggested value between 1-5. | 
| vertical_dodge_height | Amount of vertical dodging to apply on segments and table text. | 
| legend_space_x_mult | Multiplier to adjust the spacing between legend items. | 
| legend_ncol_interval | Control the number of columns for the pointinterval legend. | 
| legend_ncol_shape | Control the number of columns for the shape legend. | 
| plot_margin | Control the white space around the main plot. Vector of four numeric values for the top, right, bottom and left sides. | 
| table_margin | Control the white space around the table. Vector of four numeric values for the top, right, bottom and left sides. | 
| legend_margin | Control the white space around the plot legend. Vector of four numeric values for the top, right, bottom and left sides. | 
| parse_xlabel | treat xlabel as an expression. Logical FALSE TRUE. | 
| parse_ylabel | treat ylabel as an expression. Logical FALSE TRUE. | 
| plot_title | main plot title default to a line break. | 
| return_list | What to return if True a list of the main and table plots is returned instead of the gtable/plot. | 
Examples
library(dplyr)
library(ggplot2)
# Example 1
plotdata <- get_sample_data("forest-plot-table.csv")
plotdata <- plotdata %>%
  mutate(midlabel = format(round(mid,2), nsmall = 2),
         lowerlabel = format(round(lower,2), nsmall = 2),
         upperlabel = format(round(upper,2), nsmall = 2),
         LABEL = paste0(midlabel, " [", lowerlabel, "-", upperlabel, "]"))
param <- "BZD AUC"
plotdata <-  filter(plotdata,paramname==param)
plotdata$covname <- reorder(plotdata$covname,plotdata$upper,FUN =max)
plotdata$label <- reorder(plotdata$label,plotdata$scen)
covs <- c("WEIGHT","AGE")
plotdata <-  filter(plotdata,covname%in%covs)
forest_plot(plotdata,
            ref_legend_text = "Reference (vertical line)",
            area_legend_text = "Reference (vertical line)",
            xlabel = paste("Fold Change in", param, "Relative to Reference"),
            logxscale = TRUE, major_x_ticks =c(0.1,1,1.5),
            show_ref_area = FALSE,
            paramname_color =TRUE,
            interval_col =c("steelblue","red","steelblue","red"),
            facet_formula = "covname~.",
            facet_scales = "free_y",
            facet_space = "free_y",
            show_table_facet_strip = "none",
            table_position = "right",
            plot_title = "",
            plot_table_ratio = 4)
# Example 2
plotdata <- get_sample_data("forest-plot-table.csv")
plotdata <- plotdata %>%
  mutate(midlabel = format(round(mid,2), nsmall = 2),
         lowerlabel = format(round(lower,2), nsmall = 2),
         upperlabel = format(round(upper,2), nsmall = 2),
         LABEL = paste0(midlabel, " [", lowerlabel, "-", upperlabel, "]"))
param <- c("BZD AUC","BZD Cmax")
plotdata <-  filter(plotdata,paramname%in%param)
plotdata <-  filter(plotdata,covname%in%"WEIGHT")
plotdata$covname <- reorder(plotdata$covname,plotdata$upper,FUN =max)
plotdata$label <- reorder(plotdata$label,plotdata$scen)
forest_plot(plotdata,
            ref_legend_text = "Reference (vertical line)",
            area_legend_text = "Reference (vertical line)",
            xlabel = paste("Fold Change of Parameter", "Relative to Reference"),
            show_ref_area = FALSE,
            facet_formula = "covname~paramname",
            facet_scales = "free_y",
            facet_space = "free_y",
            x_facet_text_size = 10,
            y_facet_text_size = 10,
            y_label_text_size = 10,
            y_label_text_width = 15,
            x_label_text_size = 10,
            facet_switch = "both",
            show_table_facet_strip = "both",
            show_table_yaxis_tick_label = TRUE,
            table_position = "below",
            plot_title = "",
            plot_table_ratio = 1)
## Not run: 
# Example 3a
plotdata <- get_sample_data("forest-plot-table.csv")
plotdata <- plotdata %>%
  mutate(midlabel = format(round(mid,2), nsmall = 2),
         lowerlabel = format(round(lower,2), nsmall = 2),
         upperlabel = format(round(upper,2), nsmall = 2),
         LABEL = paste0(midlabel, " [", lowerlabel, "-", upperlabel, "]"))
plotdata$covname <- reorder(plotdata$covname,plotdata$upper,FUN =max)
plotdata$label <- reorder(plotdata$label,plotdata$scen)
plotdata$compound <- c(rep("1-OH",30),rep("BZD",30))
plotdata$paramname <- c(rep("AUC",15),rep("CMAX",15),rep("AUC",15),rep("CMAX",15))
forest_plot(plotdata,
            ref_area = c(0.8, 1.2),
           x_facet_text_size = 13,
           y_facet_text_size = 13,
            ref_legend_text = "Reference (vertical line)\n+/- 20% limits (colored area)",
            area_legend_text = "Reference (vertical line)\n+/- 20% limits (colored area)",
            xlabel = "Fold Change Relative to Parameter",
            facet_formula = covname~compound,
            facet_switch = "both",
            facet_scales = "free",
            facet_space = "fixed",
            paramname_shape = TRUE,
            legend_shape_reverse = TRUE,
            interval_shape = c("square","triangle"),
            paramname_color =  FALSE,
            combine_interval_shape_legend = FALSE,
            table_position = "right", plot_title = "",
            ref_area_col = rgb( col2rgb("gray50")[1], col2rgb("gray50")[2],col2rgb("gray50")[3],
                                max = 255, alpha = 0.1*255 ) ,
            interval_col = c("steelblue"),
            strip_col = "lightblue",
            plot_table_ratio = 1.5)
            
# Example 3b
        
plotdata$paramname <- c(rep("1-OH",30),rep("BZD",30))
plotdata$paramname2 <- c(rep("AUC",15),rep("CMAX",15),rep("AUC",15),rep("CMAX",15))
forest_plot(plotdata,
           show_ref_area = TRUE,
           x_facet_text_size = 13,
           y_facet_text_size = 13,
           ref_legend_text = "Reference (vertical line)",
           area_legend_text = "Reference (vertical line)",
           xlabel = "Fold Change Relative to Parameter",
           facet_formula = covname~paramname2,
           facet_switch = "both",
           facet_scales = "free",
           facet_space = "free",
           legend_order = c("shape","pointinterval","ref"),
           paramname_shape = TRUE,
           interval_shape = c("diamond","diamond filled",
                              "diamond","diamond filled"),
           paramname_color =  TRUE,
           combine_interval_shape_legend = TRUE,
           legend_shape_reverse = TRUE,
           legend_color_reverse = TRUE,
           interval_legend_title="Median (points)\n95% CI (horizontal lines)",
           table_position = "right", plot_title = "",
           ref_area_col = "gray85" ,
           interval_col = c("#ee3124", "#fdbb2f"),
           strip_col = "#475c6b",
           y_facet_text_col = "white",x_facet_text_col = "white",
           major_x_labels         = c("1/2", "0.8","1", "1.25", "2"),
           logxscale = TRUE, major_x_ticks =c(0.5,0.8,1,1.25,2),
           table_text_size = 5,
           plot_table_ratio = 1.5,
           ref_value_by_panel = TRUE,
           ref_value_by_panel_data = as.data.frame(
           plotdata %>% 
           distinct(paramname2,covname) %>% 
           dplyr::mutate(xintercept=ifelse(paramname2=="CMAX",1,1.2))))
# Example 3
plotdata <- get_sample_data("forestplotdatacpidata.csv")
forest_plot(plotdata,
            ref_area = c(0.8, 1.2),
            x_facet_text_size = 12,
            y_facet_text_size = 12,
            y_label_text_size = 10,
            x_label_text_size = 10,
            table_text_size = 6,
            plot_table_ratio = 1.5,
            ref_legend_text = "Reference (vertical line)\n+/- 20% limits (colored area)",
            area_legend_text = "Reference (vertical line)\n+/- 20% limits (colored area)",
            xlabel = "Fold Change Relative to RHZE",
            facet_formula = "covname~paramname",
            table_position = "below",
            show_table_facet_strip = "both",
            show_table_yaxis_tick_label = TRUE)
# Example 4
plotdata <- get_sample_data("dataforest.csv")
plotdata <- plotdata %>%
  dplyr::mutate(midlabel = format(round(mid,2), nsmall = 2),
         lowerlabel = format(round(lower,2), nsmall = 2),
         upperlabel = format(round(upper,2), nsmall = 2),
         LABEL = paste0(midlabel, " [", lowerlabel, "-", upperlabel, "]"))
plotdata <- plotdata %>%
  filter(covname%in%c("Weight"))
plotdata$label <- as.factor(as.character(plotdata$label))
plotdata$label <- factor(plotdata$label, c("36.2 kg","66 kg","110 kg"))
forest_plot(plotdata,
            ref_area = c(0.8, 1.2),
            x_facet_text_size = 13,
            y_facet_text_size = 13,
            ref_legend_text = "Reference (vertical line)\n+/- 20% limits (colored area)",
            area_legend_text = "Reference (vertical line)\n+/- 20% limits (colored area)",
            xlabel = "Fold Change Relative to Parameter",
            facet_formula = "covname~paramname",
            facet_switch = "both",
            facet_scales = "free",
            facet_space = "fixed",
            table_position = "below",
            plot_table_ratio = 1,
            show_table_facet_strip = "both",
            show_table_yaxis_tick_label = TRUE)
# Example 5
forest_plot(plotdata,
            ref_area = c(0.8, 1.2),
            x_facet_text_size = 13,
            y_facet_text_size = 13,
            ref_legend_text = "Reference (vertical line)\n+/- 20% limits (colored area)",
            area_legend_text = "Reference (vertical line)\n+/- 20% limits (colored area)",
            xlabel = "Fold Change Relative to Parameter",
            facet_formula = "covname~.",
            facet_switch = "both",
            facet_scales = "free",
            facet_space = "fixed",
            paramname_shape = TRUE,
            table_position = "none",
            ref_area_col = rgb( col2rgb("gray50")[1], col2rgb("gray50")[2],col2rgb("gray50")[3],
            max = 255, alpha = 0.1*255 ) ,
            interval_col = "steelblue",
            strip_col = "lightblue",
            plot_table_ratio = 1)
## End(Not run)