4

Please forgive the naïve question as I am new to R. I have generated a forest plot using a code that I saw and adapted on R bloggers. I would like to add a footnote but I'm not sure how to do it. I've seen different codes but I don't know which one is appropriate. Any advice is much appreciated! Thanks!

The forest plot code is below:

library(ggplot2)
library(grid)  
library(gridExtra)   
library(xtable)
library(plyr)        
library(MASS)     
library(reshape2)

d1 <- read.csv("/view/name_view/vob/folder/subfolder/forestTAF.csv", stringsAsFactors=FALSE)

#Format data so column labels and columns match required graphical output
subgps <- c(4,5,8,9,12,13,16,17,20,21,24,25,28,29)

#Combine the rest of the columns in the table
tabletext <- cbind(c("Change due to", d1$Variable), 
                c("PK Measures", d1$PK.Measures), 
                c("Recommendation", d1$Recommendation))

#Load forestplot package
library(forestplot)

#Create forest plot
png(filename="forestTAF.png",width=1600, height=640)
forestplot(labeltext=tabletext, graph.pos=3, align=c("l", "c", "l"), 
       mean=c(NA,d1$Point.Estimate), 
       lower=c(NA,d1$Low), upper=c(NA,d1$High),
       title="Drugname \nFold Change and 90% CI",
       xlab="Change Relative to Reference (i.e., without interaction)",
            txt_gp=fpTxtGp(label=gpar(cex=1.25),
                          ticks=gpar(cex=1.1),
                          xlab=gpar(cex = 1.2), 
                          title=gpar(cex = 1.2)),
       col=fpColors(box="black", lines="black"),
       zero=1, cex=0.9, lineheight = "auto", boxsize=0.5, colgap=unit(6,"mm"),
       lwd.ci=2, ci.vertices=TRUE, ci.vertices.height = 0.4)
Max Gordon
  • 5,367
  • 2
  • 44
  • 70
Christina
  • 41
  • 2

1 Answers1

3

grid::gridtext is one option

library('forestplot')

## ?forestplot

row_names <- list(list("test = 1", expression(test >= 2)))
test_data <- data.frame(coef=c(1.59, 1.24),
                        low=c(1.4, 0.78),
                        high=c(1.8, 1.55))
forestplot(row_names, test_data$coef, test_data$low, test_data$high,
           zero = 1, cex  = 2, lineheight = "auto", xlab = "Lab axis txt")

grid::grid.text where "npc" in grid::unit is the normalized 0,1 coordinate so .05 will be 5% across the image

x <- unit(.05, 'npc')
y <- unit(.05, 'npc')
grid.text('A footnote', x, y, gp = gpar(fontsize=10, font = 3))

Alternatively, you can use grid::grid.locator which allows you to point and click the position you would like.

g <- grid.locator('npc')
grid.text('A footnote', g$x, g$y, gp = gpar(fontsize=10, font = 3))

enter image description here

rawr
  • 20,481
  • 4
  • 44
  • 78