You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改ggsurvplot中的小数分隔符(点替换为逗号)

解决ggsurvplot中小数分隔符替换为逗号的方法

以下是几种可行的实现方式,按需选择:

方法一:全局区域设置(最简单)

直接调整R的区域设置,让所有输出的数字自动用逗号作为小数分隔符。不同系统的locale名称略有差异:

  • Linux/macOS:
Sys.setlocale("LC_NUMERIC", "fr_FR.UTF-8") # 法语区域,小数分隔符为逗号
  • Windows:
Sys.setlocale("LC_NUMERIC", "French_France.1252")

设置后再运行ggsurvplot,坐标轴、风险表、P值的小数都会自动换成逗号。注意:如果你的系统没安装对应locale,需要先安装(比如Linux下用locale-gen fr_FR.UTF-8)。

方法二:单独调整各组件(更灵活)

如果全局设置影响其他输出,或者需要更精细控制,可以分别修改KM曲线的各个部分:

1. 准备数据和拟合模型

library(survival)
library(survminer)
library(scales)

# 模拟数据
set.seed(123)
df <- data.frame(
  time = sample(1:100, 100, replace = TRUE),
  status = sample(0:1, 100, replace = TRUE),
  group = factor(sample(c("A", "B"), 100, replace = TRUE))
)
fit <- survfit(Surv(time, status) ~ group, data = df)

2. 绘制KM曲线并修改坐标轴

p <- ggsurvplot(fit, data = df, risk.table = TRUE, pval = TRUE)

# 修改X、Y轴刻度的小数分隔符
p$plot <- p$plot +
  scale_x_continuous(labels = format_format(decimal.mark = ",")) +
  scale_y_continuous(labels = format_format(decimal.mark = ","))

3. 修改风险表的数字格式

风险表是独立的ggplot对象,存放在p$table里,同样调整其坐标轴和文本:

p$table <- p$table +
  scale_x_continuous(labels = format_format(decimal.mark = ",")) +
  theme(axis.text.x = element_text(angle = 0)) # 可选,调整X轴文本角度避免重叠

4. 自定义P值格式

手动计算P值并替换小数点为逗号,再传入ggsurvplot:

# 计算P值
p_val <- surv_pvalue(fit)$pval
# 格式化P值,替换小数点为逗号
p_val_formatted <- gsub("\\.", ",", sprintf("P = %.3f", p_val))

# 重新绘制并传入格式化后的P值
p <- ggsurvplot(fit, data = df, risk.table = TRUE, pval = p_val_formatted)
# 再结合前面的坐标轴调整
p$plot <- p$plot +
  scale_x_continuous(labels = format_format(decimal.mark = ",")) +
  scale_y_continuous(labels = format_format(decimal.mark = ","))
p$table <- p$table +
  scale_x_continuous(labels = format_format(decimal.mark = ","))

最后调用print(p)就能看到所有数字的小数分隔符都换成逗号了。

内容的提问来源于stack exchange,提问作者kobue1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 06:35:13