【问题标题】:How do I change the font for all elements in ggsurvplot?如何更改 ggsurvplot 中所有元素的字体?
【发布时间】:2019-11-25 22:30:19
【问题描述】:

我使用以下代码绘制了 Kaplan-Meier 生存曲线和相应的风险表。我希望绘图和表格的所有元素都具有 Arial 12 号字体。

library(survival)
library(survminer)
data(lung)

fit <- survfit(Surv(time, status) ~ sex, data = lung)

png(filename="./plots/lung.sohelp.font.png", width = 6.5, height = 6.5, units = 'in', res=150)     

ggsurvplot(fit, title="Survival by Sex in 'lung' Data", xlab = "Follow Up Time (Days)",
conf.int = FALSE, 
pval=TRUE, 
pval.method=TRUE, 
risk.table=TRUE,
risk.table.pos="out",
risk.table.col="black",
risk.table.y.text.col=FALSE,
tables.theme = theme_cleantable(),
legend.labs=c("Male","Female"),
font.tickslab = c(12),
legend.title="Sex",
ggtheme = theme_classic2(base_size=12, base_family = "Arial"),
           font.family = "Arial"
   )

dev.off()

我注意到关于这个情节的一些事情:
1. 风险表中的男/女标签小于“风险数字”字体。
2. 图例和轴字体看起来比主标题和 p 值字体小。
2.情节和风险表中的数字看起来不像Arial字体。
3. 如果没有选项font.tickslab = c(12),刻度线太小。这对于ggtheme 选项来说似乎是多余的。

如何将相同的字体(Arial,12)应用于绘图和风险表的所有元素?谢谢。

【问题讨论】:

    标签: r


    【解决方案1】:

    编辑

    如果您使用的是 Windows,则可能需要在运行代码之前安装字体 (Changing fonts in ggplot2):

    library(extrafont)
    font_import()
    loadfonts(device = "win")      
    windowsFonts()            
    

    现在,

    $Arial
    [1] "Arial"
    

    应该在列表中。

    library(survival)
    library(survminer)
    data(lung)
    
    fit <- survfit(Surv(time, status) ~ sex, data = lung)
    
    p <- ggsurvplot(fit, title="Survival by Sex in 'lung' Data", xlab = "Follow Up Time (Days)",
      conf.int = FALSE, 
      pval=TRUE, 
      pval.method=TRUE, 
      risk.table=TRUE,
      risk.table.pos="out",
      risk.table.col="black",
      risk.table.y.text.col=FALSE,
      tables.theme = theme_cleantable(),
      legend.labs=c("Male","Female"),
      font.tickslab = c(12),
      legend.title="Sex",
      ggtheme = theme_classic2(base_size=12, base_family = "Arial"),
               font.family = "Arial"
    )
    ggpar(p, 
          font.main = c(12, "bold"),
          font.x = c(12, "bold"),
          font.y = c(12, "bold"),
          font.caption = c(12, "bold"), 
          font.legend = c(12, "bold"), 
          font.tickslab = c(12, "bold"))
    

    【讨论】:

    • 感谢您的建议。但是,我的目标是使文本统一 Arial,12 贯穿整个情节和风险表。虽然您在 ggpar 中的选项有助于使字体大小更加统一,但字体看起来不像 Arial。我准备了一个 Word 文档来比较从 11/26 到 Arial, 12 的情节元素,但我不知道如何在这个评论部分分享它。
    • 如果您收到错误消息:font family not found in Windows font database,您需要先使用包extraFont 并运行font_import。详情请查看:stackoverflow.com/questions/34522732/changing-fonts-in-ggplot2
    猜你喜欢
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    相关资源
    最近更新 更多