Лесной участок: хочу дать легенду за каждые 4 колонны

Без легенды мой лесной участок работает хорошо, используя приведенный ниже код

rm(list=ls())
library(forestplot)

test_data2<-data.frame(prev1=c(0, 70, NA), 
                   prev0=c(0, 20, NA), 
                   prev3=c(NA,NA , 30),
                   prev4=c(NA,NA , 30),
                   low1=c( 0, 30, NA), 
                   low0=c( 0, 10, NA), 
                   low3=c(NA, NA, 10),
                   low4=c(NA, NA, 10),
                   high1=c( 30, 90, NA), 
                   high0=c( 20, 50, NA),
                   high3=c(NA,NA , 60),
                  high4=c(NA,NA , 60))

test_data2 <- rbind(rep(NA, 3), test_data2)

col_no2<-grep("prev", colnames(test_data2))

row_names2<-list(
list("Author", "You", "Asiimwe", "Martin"), 
list("Year", "1988", "1984", "1964")
)


prev<-with(test_data2, cbind(prev1, prev0, prev3, prev4))
low<-with(test_data2, cbind(low1, low0, low3, low4))
high <- with(test_data2, cbind(high1, high0, high3, high4))

forestplot(row_names2, prev, low, high,
       #zero = c(0, 0.01),
       fn.ci_norm = list(list(fpDrawNormalCI, fpDrawCircleCI,       fpDrawDiamondCI, fpDrawPointCI),
                         list(fpDrawNormalCI, fpDrawCircleCI, fpDrawDiamondCI, fpDrawPointCI),
                         list(fpDrawNormalCI, fpDrawCircleCI, fpDrawDiamondCI, fpDrawPointCI),
                         list(fpDrawNormalCI, fpDrawCircleCI, fpDrawDiamondCI, fpDrawPointCI)
                         ),

       xticks = c(0,10, 20, 30, 40, 50, 60, 70, 80, 90, 100),
       txt_gp = fpTxtGp(label = list(gpar(fontfamily = ""),
                                     gpar(fontfamily = "",
                                          col = "black")),
                        ticks = gpar(fontfamily = "", cex=0.8),
                        xlab  = gpar(fontfamily = "", cex = 0.8)),
       boxsize=0.15,
       line.margin = .1, # We need to add this to avoid crowding
       lty.ci = c(1, 2, 3, 4),
       xlab="Prevalence (%)",
       new_page = TRUE)

Однако, когда я поставил легенду для каждого prev1, prev2, prev3 и prev4 с CI, появилась ошибка, и она не работает.

Код, который я использовал, был как ниже.

rm(list=ls())
library(forestplot)

test_data2<-data.frame(prev1=c(0, 70, NA), 
                   prev0=c(0, 20, NA), 
                   prev3=c(NA,NA , 30),
                   prev4=c(NA,NA , 30),
                   low1=c( 0, 30, NA), 
                   low0=c( 0, 10, NA), 
                   low3=c(NA, NA, 10),
                   low4=c(NA, NA, 10),
                   high1=c( 30, 90, NA), 
                   high0=c( 20, 50, NA),
                   high3=c(NA,NA , 60),
                  high4=c(NA,NA , 60))

test_data2 <- rbind(rep(NA, 3), test_data2)

col_no2<-grep("prev", colnames(test_data2))

row_names2<-list(
list("Author", "You", "Asiimwe", "Martin"), 
list("Year", "1988", "1984", "1964")
)


prev<-with(test_data2, cbind(prev1, prev0, prev3, prev4))
low<-with(test_data2, cbind(low1, low0, low3, low4))
high <- with(test_data2, cbind(high1, high0, high3, high4))

forestplot(row_names2, prev, low, high,
       #zero = c(0, 0.01),
       fn.ci_norm = list(list(fpDrawNormalCI, fpDrawCircleCI,       fpDrawDiamondCI, fpDrawPointCI),
                         list(fpDrawNormalCI, fpDrawCircleCI, fpDrawDiamondCI, fpDrawPointCI),
                         list(fpDrawNormalCI, fpDrawCircleCI, fpDrawDiamondCI, fpDrawPointCI),
                         list(fpDrawNormalCI, fpDrawCircleCI, fpDrawDiamondCI, fpDrawPointCI)
                         ),

       xticks = c(0,10, 20, 30, 40, 50, 60, 70, 80, 90, 100),
       txt_gp = fpTxtGp(label = list(gpar(fontfamily = ""),
                                     gpar(fontfamily = "",
                                          col = "black")),
                        ticks = gpar(fontfamily = "", cex=0.8),
                        xlab  = gpar(fontfamily = "", cex = 0.8)),
       boxsize=0.15,
       line.margin = .1, # We need to add this to avoid crowding
       lty.ci = c(1, 2, 3, 4),
       xlab="Prevalence (%)",
       new_page = TRUE,
       legend=c("HIV-infected", "HIV-uninfected", "All participats", "Love-you"),
       legend_args = fpLegend(pos = list("topright"),
                              r = unit(.1, "snpc")  
                              ))

У кого-нибудь есть идеи по этому поводу? Спасибо!

1 ответ

Это оказалось ошибкой - спасибо за подробный отчет, который позволил быструю отладку. Должно быть исправлено в версии 1.7.1 dev, установите его используя devtools:

devtools::install_github("gforge/forestplot", ref="develop")
Другие вопросы по тегам