类似的问题已经被多次提出(hereherehere).然而,在我的情况下,它并不起作用.

所以我有这段代码(见下文),我想让"Column"Gene中的所有元素都变成斜体,除了标题(Gene)和摘要(Cancer).

使用expression(italic())会引发could not find function "italic"错误.我想,我不得不在这里使用fp_txt_italic()txt_gp,但我就是不明白它们是如何工作的.也许有人能给我一些启发:).

我的代码(简化了,因为原始代码稍微复杂一些):

library(forestplot)
library(dplyr)


mean <- c(0.9, 1.0, 1.1, 1.0 )
lower <- c(0.8, 0.9, 1.0, 0.9 )
upper <- c(1.0, 1.1, 1.2, 1.1 )
gene <- c("TP53", "KRAS", "CBP", "Cancer")
p_value <- c(0.06, 0.05, 0.01, 0.05 )
n_pos <- c(30, 40, 35, 50)
n_neg  <- c(470, 460, 465, 450)


base_data <- tibble(mean = mean,
                    lower = lower,
                    upper = upper,
                    gene = gene,
                    n_pos = n_pos,
                    n_neg = n_neg,
                    p_value = p_value)


base_data |>
  filter(gene != "Cancer") |>
  forestplot(labeltext = c(gene, n_pos, n_neg, p_value),
             xlog = TRUE,
             vertices = TRUE,
             txt_gp = fpTxtGp(
               label = list(
                 grid::gpar(fontface = "italic"),
                 grid::gpar()))) |>
  fp_append_row(mean  = filter(base_data, gene == "Cancer")$mean,
                lower = filter(base_data, gene == "Cancer")$lower,
                upper = filter(base_data, gene == "Cancer")$upper,
                gene = filter(base_data, gene == "Cancer")$gene,
                n_pos = filter(base_data, gene == "Cancer")$n_pos,
                n_neg = filter(base_data, gene == "Cancer")$n_neg,
                p_value = filter(base_data, gene == "Cancer")$p_value,
                is.summary = TRUE) |>
  fp_add_header(gene = c("Gene\n"),
                n_pos = c("n(mutated)\n"),
                n_neg = c("n(wildtype)\n"),
                p_value = c("p\n")) |>
  fp_set_zebra_style("#EFEFEF") |>
  fp_add_lines() |>
  fp_decorate_graph(graph.pos = 2)

推荐答案

在这answer之后,可以使用forestplottxt_gp=参数

设置所有文本元素的字体等.

使用类fpTxtGp的对象.要创建该对象,可以使用fpTxtGp()函数,该函数通过label=参数允许使用grid::gpar()设置文本标签的字体等.除了为所有文本标签设置一种字体等外,您还可以为每列或每个元素单独设置字体.

在下面的代码中,我通过传递2元素list来确定列的目标,即,对于第一列,我设置了fontface = "italic",而对于第二列,我使用了缺省值.

library(forestplot)
library(tidyverse)

base_data |>
  filter(gene != "Cancer") |>
  forestplot(
    labeltext = c(gene, p_value),
    xlog = TRUE,
    vertices = TRUE,
    txt_gp = fpTxtGp(
      label = list(
        grid::gpar(fontface = "italic"),
        grid::gpar()
      )
    )
  ) |>
  fp_append_row(
    mean = filter(base_data, gene == "Cancer")$mean,
    lower = filter(base_data, gene == "Cancer")$lower,
    upper = filter(base_data, gene == "Cancer")$upper,
    gene = filter(base_data, gene == "Cancer")$gene,
    p_value = filter(base_data, gene == "Cancer")$p_value,
    is.summary = TRUE
  ) |>
  fp_add_header(
    gene = c("Gene\n"),
    p_value = c("p\n")
  ) |>
  fp_set_zebra_style("#EFEFEF") |>
  fp_add_lines() |>
  fp_decorate_graph(graph.pos = 2)

R相关问答推荐

Tidyverse/Djirr为从嵌套列表中提取的列名赋值的解决方案

用黄土法确定区间

如何将dygraph调用到R Markdown作为一个shiny 的react 对象的参数?

使用case_match()和char数组重新编码值

计算具有奇数日期的运行金额

当月份额减go 当月份额

在R中,如何将变量(A,B和C)拟合在同一列中,如A和B,以及A和C在同一面板中?

在RStudio中堆叠条形图和折线图

从多个线性回归模型中提取系数

如何根据数据帧中的值从该数据帧中提取值?

将选定的索引范围与阈值进行比较

是否有新方法来更改Facet_WRAP(Ggplot2)中条文本的文本 colored颜色 ?

将箭头绘制在图形外部,而不是图形内部

使用R将简单的JSON解析为嵌套框架

将统计检验添加到GGPUBR中的盒图,在R

如何显示准确的p值而不是<;0.001*?

将数据从一列转换为按组累计计数的单个虚拟变量

将y轴格式更改为R中的百分比

从多行中 Select 最小值

如何修改Rust中的R字符串并将其赋给新的R变量,并使用extendr保留原始R字符串