объединить элементы в формате лесного участка в один элемент - PullRequest
1 голос
/ 24 мая 2019

Я создаю forestplot, используя пакет forestplot в R, и у меня возникли проблемы с несколькими вещами.

Вопросы:

  1. Возможно ли объединение двух смежных текстовых элементов
  2. Можно ли изменить шрифт для одного элемента текста или шрифт для всей строки

Мой код:

library(forestplot)

# creating text
text <- rbind(c('', 'N (%)', 'SRT', 'ART',  'HR [95% CI]'),
              c('', '', '5 year survival %',  '5 year survival %', ''),
              c('Seminal Vesicle Involvement', '', '', '', ''),
              c('        Yes', '10 (20%)',   '94', '12', '0.73  [0.36, 1.50]'),
              c('        No', '40 (80%)',   '96', '10', '1.78  [0.73, 4.35]'),
              c('Gender', '', '', '', ''),
              c('        Male', '13 (22.5%)', '84', '22', '0.06  [-0.2, 0.86]'),
              c('        Female', '37 (77.5%)', '93', '13', '1.89  [0.90, 6.67]'))

# creating the plot
forestplot(text, 
           mean = c(NA, NA, NA, 0.73, 1.78, NA, 0.06, 1.89), 
           lower = c(NA, NA, NA, 0.36, 0.73, NA, -0.2, 0.90), 
           upper = c(NA, NA, NA, 1.50, 4.35, NA, 0.86, 6.67),
           is.summary=c(T, T, T, F, F, T, F, F),
           lineheight = unit(0.9, "cm"),
           graph.pos = 5,
           graphwidth = unit(4, 'cm'),
           xticks = c(-1, 0, 1, 2, 3, 4),
           ci.vertices = T,
           txt_gp = fpTxtGp(ticks = gpar(cex = 1),
                            xlab  = gpar(cex = 1),
                            label = gpar(cex = 0.8),
                            summary = gpar(cex = 0.8)),
           col=fpColors(box="black", 
                        line="darkgrey", 
                        summary="black", 
                        zero='grey20', 
                        axes='grey20'),
           hrzl_lines = list("2" = gpar(lwd=1, col = "#000044")))

Выход:

enter image description here

Желаемая:

Я хотел бы, чтобы два 5 year survival % текстовых бита были объединены в 1 (и центрированы между двумя заголовками выше), и либо только эти элементы, либо вся строка были курсивом.

Я пытался использовать summary=list(gpar(...)) для опции txt_gp, но это только кажется способным изменить весь столбец, и я вообще ничего не нашел при объединении ячеек.

1 Ответ

1 голос
/ 30 мая 2019

Если вы сделаете colgap намного меньше в forestplot, чем обычно, вы можете разбить текст, который в настоящее время дублируется в строке 2 в столбцах 3 и 4, на две части:

> text[2, 4] <- 'survival % '
> text[2, 3] <- '5 year '
> 
> forestplot(text, 
+            mean = c(NA, NA, NA, 0.73, 1.78, NA, 0.06, 1.89), 
+            lower = c(NA, NA, NA, 0.36, 0.73, NA, -0.2, 0.90), 
+            upper = c(NA, NA, NA, 1.50, 4.35, NA, 0.86, 6.67),
+            is.summary=c(T, T, T, F, F, T, F, F),
+            lineheight = unit(0.9, "cm"),
+            graph.pos = 5,
+            graphwidth = unit(4, 'cm'),
+            xticks = c(-1, 0, 1, 2, 3, 4),
+            ci.vertices = T, 
#   add line---------
          colgap=unit(.0011,"npc"),
#
+            txt_gp = fpTxtGp(ticks = gpar(cex = 1),
+                             xlab  = gpar(cex = 1),
+                             label = gpar(cex = 0.8),
+                             summary = gpar(cex = 0.8)),
+            col=fpColors(box="black", 
+                         line="darkgrey", 
+                         summary="black", 
+                         zero='grey20', 
+                         axes='grey20'),
+            hrzl_lines = list("2" = gpar(lwd=1, col = "#000044")))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...