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

如何为ggpubr分面图的每个分面单独设置文本标签位置?

可以为每个分面单独设置文本标签位置,给你两种实用方法:

方法1:在stat函数里按分面变量指定位置

利用case_when根据分面的Species变量,给每个分面单独设置label.y(或label.x),精准控制文本位置避免重叠。修改后的代码如下:

library(ggpubr)
library(ggplot2)
library(dplyr)

df <- iris

ggscatter(df, x = "Sepal.Length", y = "Sepal.Width", facet.by = "Species", add = "reg.line") +
  stat_regline_equation(
    aes(label.y = case_when(
      Species == "setosa" ~ 4.2,
      Species == "versicolor" ~ 3.8,
      Species == "virginica" ~ 3.4
    ))
  ) +
  stat_cor(
    aes(
      label = paste(..rr.label.., ..p.label.., sep = "~`,`~"),
      label.y = case_when(
        Species == "setosa" ~ 4.0,
        Species == "versicolor" ~ 3.6,
        Species == "virginica" ~ 3.2
      )
    )
  )

你可以根据自己图中的实际布局,调整每个分面对应的label.y数值,直到文本与回归线无重叠。

方法2:先计算统计量,再手动添加文本(更灵活)

如果需要同时调整x、y坐标或对齐方式,建议提前计算每个分面的回归方程、R²和p值,再用geom_text手动添加,步骤如下:

  1. 计算各分面的回归统计量:
library(broom)

# 按物种分组计算回归系数
reg_coef <- df %>%
  group_by(Species) %>%
  do(tidy(lm(Sepal.Width ~ Sepal.Length, data = .))) %>%
  ungroup()

# 计算R²和p值
model_metrics <- df %>%
  group_by(Species) %>%
  do(glance(lm(Sepal.Width ~ Sepal.Length, data = .))) %>%
  ungroup() %>%
  select(Species, r.squared, p.value)

# 合并生成文本标签和自定义位置
label_df <- reg_coef %>%
  pivot_wider(names_from = term, values_from = estimate) %>%
  left_join(model_metrics, by = "Species") %>%
  mutate(
    eq_label = paste0("y = ", round(Sepal.Length, 2), "x + ", round(`(Intercept)`, 2)),
    cor_label = paste0("R² = ", round(r.squared, 2), ", p = ", round(p.value, 3)),
    # 手动指定每个分面的文本坐标
    x_pos = c(5.5, 6.5, 7.5),
    y_eq = c(4.2, 3.8, 3.4),
    y_cor = c(4.0, 3.6, 3.2)
  )
  1. 绘图并添加自定义文本:
ggscatter(df, x = "Sepal.Length", y = "Sepal.Width", facet.by = "Species", add = "reg.line") +
  geom_text(data = label_df, aes(x = x_pos, y = y_eq, label = eq_label), hjust = 0) +
  geom_text(data = label_df, aes(x = x_pos, y = y_cor, label = cor_label), hjust = 0)

这种方法可以完全自定义文本的位置、对齐方式甚至字体样式,适合复杂的排版需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:15:35