如何更改ggsurvplot中所有元素的字体?

时间:2019-11-25 22:30:19

标签: r

我使用以下代码绘制了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()

Plot: https://i.stack.imgur.com/5ZG30.png

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

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

1 个答案:

答案 0 :(得分: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"))

enter image description here