ggsurvfit生存概率图字体大小调整失败求助
ggsurvfit生存概率图字体大小调整失败求助
问题描述
我在用R Markdown绘制生存概率图时用了ggsurvfit包,结果输出的图字体小到几乎看不清!我尝试调整字体大小但没成功,请问该怎么解决?
我的代码如下:
library(ggsurvfit) ggsurvfit(SF_ALL_OBJECTS)+ labs( x = "Time in Years", y = "Overall Survival Probability")+ scale_y_continuous(expand = c(0.025, 0), limits = c(0, 1))
我试过添加以下代码,但没用:
+ theme(text=element_text(size=24, family="sans"))
解决方案
别着急,我来帮你排查问题!其实ggsurvfit生成的图基于ggplot2,但它自带专属主题系统,直接用theme()覆盖会被包自带主题的优先级压制,试试下面几种方法:
方法一:在
ggsurvfit()中直接指定主题参数
把自定义主题传入ggsurvfit()的theme参数,能确保你的设置优先生效:library(ggsurvfit) ggsurvfit(SF_ALL_OBJECTS, theme = theme_bw(base_size = 24)) + labs( x = "Time in Years", y = "Overall Survival Probability")+ scale_y_continuous(expand = c(0.025, 0), limits = c(0, 1)) + theme(text = element_text(family = "sans"))这里先用
theme_bw(base_size = 24)设定基础字体大小,再补充你需要的字体族设置。方法二:全局更新ggplot2主题
如果不想每次绘图都重复设置主题,可以先全局更新ggplot2的主题配置,后续所有ggplot2系的图都会自动应用:theme_update(text = element_text(size = 24, family = "sans")) ggsurvfit(SF_ALL_OBJECTS)+ labs( x = "Time in Years", y = "Overall Survival Probability")+ scale_y_continuous(expand = c(0.025, 0), limits = c(0, 1))方法三:针对性调整特定元素
如果你只想放大某几个部分的字体(比如坐标轴标题、刻度标签),可以单独指定元素的大小,更灵活:ggsurvfit(SF_ALL_OBJECTS)+ labs( x = "Time in Years", y = "Overall Survival Probability")+ scale_y_continuous(expand = c(0.025, 0), limits = c(0, 1)) + theme( axis.title = element_text(size = 24), axis.text = element_text(size = 20), legend.text = element_text(size = 20), legend.title = element_text(size = 22), family = "sans" )
补充说明
你之前的方法失效,是因为ggsurvfit默认会应用theme_ggsurvfit()主题,这个主题会在你添加的theme()之后再覆盖部分样式,导致你的设置没生效。把主题放在ggsurvfit()参数里或者全局更新,就能避开这个优先级问题啦!
备注:内容来源于stack exchange,提问作者Ahmed Mabrouk
相关产品推荐
相关产品推荐

