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

ggplot图例标题修改问题:如何将图例标题从name改为space?

问题与解决方案

数据集与原代码

数据集

RegionGreenspaceBluespace
North305
South5010
West152
East101

生成数据集的R代码

data <- data.frame(
  stringsAsFactors = FALSE,
  Region = c("North", "South", "West", "East"),
  Greenspace = c(30,50,15,10),
  Bluespace = c(5,10,2,1)
)

原绘图代码

data %>% 
  pivot_longer(cols = Greenspace:Bluespace) %>% 
  ggplot(aes(x = Region, y = value, fill = name)) + 
  geom_col(position = 'dodge') + 
  ggtitle("Contrast between 4 different region areas for Greenspace and Bluespace") + 
  xlab("Region") + 
  ylab("percentage")+ 
  scale_fill_manual(values=c("blue", "dark green"))

问题

想将图例标题改为“space”,但直接把aes中的fill = name改成fill = space时,会出现“找不到space”的错误。

解决方法

有两种简单的解决方式:

方式1:修改pivot_longer的列名

在pivot_longer时直接把生成的分类列命名为space,后续aes里直接用fill = space就不会报错,图例标题自动变为“space”:

data %>% 
  pivot_longer(cols = Greenspace:Bluespace, names_to = "space") %>% 
  ggplot(aes(x = Region, y = value, fill = space)) + 
  geom_col(position = 'dodge') + 
  ggtitle("Contrast between 4 different region areas for Greenspace and Bluespace") + 
  xlab("Region") + 
  ylab("percentage")+ 
  scale_fill_manual(values=c("blue", "dark green"))

方式2:用labs()修改图例标题

保持原pivot_longer代码不变,通过labs(fill = "space")指定图例标题,无需修改aes里的fill参数:

data %>% 
  pivot_longer(cols = Greenspace:Bluespace) %>% 
  ggplot(aes(x = Region, y = value, fill = name)) + 
  geom_col(position = 'dodge') + 
  ggtitle("Contrast between 4 different region areas for Greenspace and Bluespace") + 
  xlab("Region") + 
  ylab("percentage")+ 
  scale_fill_manual(values=c("blue", "dark green")) +
  labs(fill = "space")  # 新增该行修改图例标题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:15:34