如何调整ggscatter相关图中自动生成的R和p值字体大小?
调整ggscatter相关图中R值与p值的字体大小
问题说明
使用ggscatter绘制相关图时,尝试用cex参数调整自动生成的Pearson相关系数(R)和p值的字体大小,但该参数无效,需可行的调整方案。
用户原始脚本:
cpsbs <- read_csv("cpsbs.csv") View(cpsbs) psbs600 <- ggscatter(cpsbs, x = "npq600", y = "rd", add = "reg.line", conf.int = TRUE, cor.coef = TRUE, cor.method = "pearson", xlab = "Max NPQ (600s)", ylab = "PsbS relative density")+ theme(text = element_text(size = 18))
对应数据框:
data.frame(cpsbs) id gen line npq600 npq900 rd delcq 1 1 PsbS L1.1 3.053330 0.19666 1.2211420 4.862588 2 2 PsbS L1.2 3.133333 0.17000 1.5918041 5.470889 3 3 PsbS L1.3 2.756667 0.17000 2.1668718 4.773088 4 4 PsbS L1.4 3.160000 0.21000 2.6198157 3.809744 5 5 PsbS L1.5 3.306667 0.20700 1.5571007 4.169890 6 6 PsbS L1.6 0.480000 0.33000 0.0000000 0.000000 7 7 PsbS L1.7 2.960000 0.20000 1.0520551 4.485594 8 8 PsbS L1.8 2.946667 0.21000 0.4648043 3.900248 9 9 PsbS L1.9 2.986667 0.18000 1.9454836 3.782560
解决方案
ggscatter的cor.coef参数本质调用ggpubr::stat_cor()函数,无法直接通过cex调整字体,可采用以下两种方法:
方法1:通过cor.coef.args传递字体大小参数
在ggscatter()中添加cor.coef.args参数,直接指定size值控制R和p值的字体大小,这是最直接的方式:
修改后的脚本:
cpsbs <- read_csv("cpsbs.csv") psbs600 <- ggscatter(cpsbs, x = "npq600", y = "rd", add = "reg.line", conf.int = TRUE, cor.coef = TRUE, cor.method = "pearson", cor.coef.args = list(size = 12), # 按需调整字体大小 xlab = "Max NPQ (600s)", ylab = "PsbS relative density") + theme(text = element_text(size = 18))
方法2:通过theme()局部调整相关系数文本
若需单独调整相关系数文本而不影响其他元素,可针对stat_cor生成的文本对象设置:
psbs600 + theme( text = element_text(size = 18), # 单独指定相关系数文本大小 plot.caption = element_text(size = 12) )
注:方法1更精准,因为
cor.coef.args直接将参数传递给生成相关系数的stat_cor函数,不会干扰其他文本元素的格式。
内容的提问来源于stack exchange,提问作者wychin
相关产品推荐
相关产品推荐

