在R语言的ggscatter中,能否将r值与p值的小数点替换为逗号?
解决方法
当然可以修改显示格式,这里提供两种实用方案:
方案一:修改R的区域设置(全局生效)
通过设置R的数字格式区域为巴西葡萄牙语,让所有数值输出自动使用逗号作为小数点分隔符:
# 设置区域为巴西葡萄牙语(需确保系统支持该区域) Sys.setlocale("LC_NUMERIC", "pt_BR.UTF-8") # 正常使用ggscatter绘图,相关系数会自动显示为逗号格式 library(ggpubr) data(mtcars) ggscatter(mtcars, x = "wt", y = "mpg", add = "reg.line", conf.int = TRUE, cor.coef = TRUE)
如果执行Sys.setlocale时报错,先通过system("locale -a")(Linux/macOS)或system("chcp")(Windows)检查系统是否支持pt_BR.UTF-8区域,若没有需先安装对应语言包。
方案二:自定义相关系数标签(仅针对当前图形)
如果不想修改全局设置,可以手动生成带逗号的相关系数标签,替换默认输出:
library(ggpubr) data(mtcars) # 计算Pearson相关系数 r_value <- cor(mtcars$mpg, mtcars$wt, method = "pearson") # 将小数点替换为逗号,生成自定义标签 r_label <- paste0("r = ", gsub("\\.", ",", format(r_value, digits = 2))) # 绘图:关闭默认cor标签,添加自定义标签 ggscatter(mtcars, x = "wt", y = "mpg", add = "reg.line", conf.int = TRUE, cor.coef = FALSE) + annotate("text", x = 4, y = 30, label = r_label, size = 5)
或者直接通过stat_cor函数自定义标签格式:
ggscatter(mtcars, x = "wt", y = "mpg", add = "reg.line", conf.int = TRUE) + stat_cor( aes(label = paste0("r = ", gsub("\\.", ",", format(r, digits = 2)))), method = "pearson", size = 5 )
内容的提问来源于stack exchange,提问作者Diego Goergen
相关产品推荐
相关产品推荐

