R ggplot2设置size图例position='none'不生效,如何删除该图例?
问题原因
你在guide_legend()中传入position='none'的写法无法删除图例,该参数的作用是调整单个图例在全局图例区域内的摆放位置,而非移除该图例,因此无法达到预期效果。
可行解决方案
- 方案1:直接在
guides()中指定关闭size图例,这是最简便的实现方式,同时可保留文本大小随abs(sales)动态变化的映射效果
仅需要将原代码末尾的guides(size=guide_legend(title='size',position='none'))替换为guides(size = "none")即可。 - 方案2:如果不需要文本大小动态调整,可将
size参数移出aes()映射,直接设置固定大小,不会生成对应图例
示例修改为:geom_text(aes(label=round(sales,0.1)), size = 4) - 方案3:通过scale系列函数关闭size图例
新增一行代码:scale_size_continuous(guide = "none")
修改后完整可运行代码
library(tidyverse) plot_data <- data.frame(category=rep(letters[1:5],10), amount=rep(rnorm(5),10)) plot_data %>% group_by(category) %>% summarise(sales=sum(amount)) %>% arrange(-sales) %>% mutate(category=fct_inorder(category)) %>% ggplot(aes(x=category,y=sales)) + geom_bar(stat='identity',aes(fill=category)) + geom_text(aes(label=round(sales,0.1),size=abs(sales))) + theme(legend.position ="top") + guides(size = "none")
内容的提问来源于stack exchange,提问作者anderwyang
相关产品推荐
相关产品推荐

