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

如何在R中修改图例标签文本及设置图例标题格式?

解决R语言ggplot2图例标签自定义与标题格式调整问题

嘿,我来帮你搞定这两个ggplot2的图例问题!咱们一步步来:

1. 自定义图例标签文本

你提到用scale_color_hue,但你的图是用fill映射分组的,所以应该用scale_fill_discrete(或者scale_fill_hue,效果一致),在这个函数里通过labels参数指定自定义的标签文本就行。比如把"Breakfast"改成"早餐","Dinner"改成"晚餐",你可以换成任何你需要的文本。

2. 调整图例标题的字号与加粗格式

有两种方式可以实现:

  • 方式一:在theme()里设置legend.title参数,用element_text()指定size(字号)和face="bold"(加粗)。
  • 方式二:在guides(fill = guide_legend(...))里添加title.theme参数,同样用element_text()设置格式。

下面是整合了这两个修改的完整代码,我标注了修改的关键部分:

library(dplyr)
library(ggplot2)
library(forcats) # 加载fct_reorder所属的包,避免潜在警告

dat %>% 
    filter(time %in% c("Breakfast", "Dinner")) %>% 
    droplevels %>% 
    count(time, class) %>% 
    group_by(time) %>% 
    mutate(prop = n/sum(n)) %>% 
    ggplot(aes(x = fct_reorder(class, prop), y = prop, fill = time, label = scales::percent(prop))) + 
    geom_col(position = 'dodge') + 
    geom_text(position = position_dodge(width = 0.9), vjust = 0.5, size = 3) + 
    scale_y_continuous(labels = scales::percent)+ 
    # 自定义图例标签文本:键是原数据值,值是替换后的自定义文本
    scale_fill_discrete(labels = c("Breakfast" = "早餐", "Dinner" = "晚餐")) + 
    coord_flip() + 
    theme(
        legend.position="top", 
        legend.direction="vertical",
        # 设置图例标题的字号和加粗效果
        legend.title = element_text(size = 12, face = "bold")
    )+ 
    guides(fill = guide_legend(title = "用餐时段", nrow = 1))+ # 这里可直接修改图例标题文本
    coord_flip()

代码说明:

  • scale_fill_discrete(labels = c("原标签" = "新标签", ...)):用键值对替换标签更不容易出错,如果你确定分组顺序固定,也可以直接写labels = c("早餐", "晚餐")。
  • legend.title = element_text(size = 12, face = "bold"):size数值可根据需求调整,face="bold"实现加粗效果。
  • 你原代码里重复了coord_flip(),保留一个即可,不影响结果但更简洁。

如果想用第二种方式在guides里设置标题格式,也可以这样写:

guides(fill = guide_legend(
    title = "用餐时段",
    nrow = 1,
    title.theme = element_text(size = 12, face = "bold")
))

两种方式选一种就行,效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:27:37