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

如何在R的ggplot中按APA第7版设置标题上方的粗体无斜体Figure标签?

解决APA第7版ggplot图表标题格式问题(Figure标签粗体,标题正文非粗斜)

问题核心

你当前的代码将Figure标签和标题正文放在同一个plot.title中,且主题里设置了整体斜体,导致无法单独控制标签的粗体格式。以下是两种简单的实现方式:


方法1:使用ggtext包(推荐,简洁灵活)

借助ggtext的element_markdown支持markdown语法,直接在标题文本中为Figure标签设置粗体,同时保持正文格式正常。

  1. 安装并加载ggtext包:
install.packages("ggtext")
library(ggplot2)
library(ggtext)
  1. 修改自定义theme_apa主题,替换plot.title为element_markdown:
theme_apa <- function(){
  theme(
    plot.title = element_markdown(size = 12, face = "plain"), # 支持markdown富文本,整体设为普通格式
    legend.position = "right",
    axis.text.x = element_text(size = 12),
    axis.text.y = element_text(size = 12),
    axis.title.x = element_text(size = 12, face = "bold"),
    axis.title.y = element_text(size = 12, face = "bold"),
    strip.text = element_text(size = 12),
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    panel.background = element_rect(fill = "white"),
    axis.line = element_line(color = "black")
  )
}
  1. 调整ggplot代码的标题,用**包裹Figure标签实现粗体:
# 线性回归图
ggplot(autism_data, aes(x = Autism_Scale, y = Coord)) +
  geom_point(color = "gray", size = .5) +
  geom_smooth(color="black", method = "lm") +
  xlab("Autism Measure Score") + 
  ylab("Coordination Level") +
  labs(title = "**Figure 1:**\nSynchrony as a Function of Autism Measure Score") + # 仅加粗Figure标签
  theme_apa() +
  stat_poly_eq(aes(label = paste(after_stat(eq.label),
                                 after_stat(rr.label), sep = "*\", \"*")))

方法2:无需额外包,用annotate单独添加标签

如果不想引入新包,可以用annotate单独绘制粗体的Figure标签,再调整标题位置留出空间。

  1. 先修改theme_apa中的plot.title为普通格式:
theme_apa <- function(){
  theme(
    plot.title = element_text(face = "plain", size = 12, margin = margin(t = 20, b = 10)), # 顶部留空间放标签
    legend.position = "right",
    axis.text.x = element_text(size = 12),
    axis.text.y = element_text(size = 12),
    axis.title.x = element_text(size = 12, face = "bold"),
    axis.title.y = element_text(size = 12, face = "bold"),
    strip.text = element_text(size = 12),
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    panel.background = element_rect(fill = "white"),
    axis.line = element_line(color = "black")
  )
}
  1. 在ggplot中添加annotate文本:
# 线性回归图
ggplot(autism_data, aes(x = Autism_Scale, y = Coord)) +
  geom_point(color = "gray", size = .5) +
  geom_smooth(color="black", method = "lm") +
  xlab("Autism Measure Score") + 
  ylab("Coordination Level") +
  labs(title = "Synchrony as a Function of Autism Measure Score") +
  # 添加粗体Figure标签,需根据数据范围调整x/y坐标
  annotate("text", x = min(autism_data$Autism_Scale), y = max(autism_data$Coord), 
           label = "Figure 1:", fontface = "bold", hjust = 0, vjust = 1.5, size = 4) +
  theme_apa() +
  stat_poly_eq(aes(label = paste(after_stat(eq.label),
                                 after_stat(rr.label), sep = "*\", \"*")))

说明

  • 方法1的优势是格式控制更精准,无需手动调整位置,完全适配APA第7版要求;
  • 方法2适合不想安装额外包的场景,但需要根据你的数据范围微调annotate的x/y参数,确保标签位置正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:15:12