ggplot图例标题修改问题:如何将图例标题从name改为space?
问题与解决方案
数据集与原代码
数据集
| Region | Greenspace | Bluespace |
|---|---|---|
| North | 30 | 5 |
| South | 50 | 10 |
| West | 15 | 2 |
| East | 10 | 1 |
生成数据集的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
相关产品推荐
相关产品推荐

