R 指定图例列中的因子数
是否可以手动指示ggplot图例中每列显示的因子数? 这是一个可重复的示例,演示了我正在尝试做的事情:R 指定图例列中的因子数,r,ggplot2,R,Ggplot2,是否可以手动指示ggplot图例中每列显示的因子数? 这是一个可重复的示例,演示了我正在尝试做的事情: #loading libraries library(ggplot2) #Creating hypothetical dataframe services<-data.frame(study=c(0),category=c(0),subcategory=c(0)) services<-services[-1,] services[1:15,1]<-c(1:15) serv
#loading libraries
library(ggplot2)
#Creating hypothetical dataframe
services<-data.frame(study=c(0),category=c(0),subcategory=c(0))
services<-services[-1,]
services[1:15,1]<-c(1:15)
services[1:4,2]<-c("Provisioning", "Regulating", "Suporting", "Cultural")
services[5:8,2]<-c("Provisioning", "Regulating", "Suporting", "Cultural")
services[9:10,2]<-c("Provisioning", "Regulating")
services[11:15,2]<-c("Provisioning", "Regulating", "Suporting", "Cultural", "Provisioning")
services[1:4,3]<-c("Water supply", "Climate regulation", "Soil formation", "Recreation")
services[5:8,3]<-c("Fisheries", "Water purification", "Habitat", "Recreation")
services[9:10,3]<-c("Water supply", "Flood regulation")
services[11:15,3]<-c("Agriculture", "Water purification", "Soil formation", "Aesthetics", "Fisheries")
services
#Manually re-ordering subcategory factors by larger categories and by number of occurences in the df (I am also looking for a better way to do this, as it must exist!!)
table(services$subcategory)
services$subcategory <- factor(services$subcategory,
levels=c(#Cultural services
"Recreation", "Aesthetics",
#Provisioning services
"Fisheries", "Water supply", "Agriculture",
#Regulating services
"Water purification", "Climate regulation","Flood regulation",
#Supporting services
"Soil formation", "Habitat"))
#Creating figure
ggplot(services, aes(category, fill=subcategory)) + geom_bar() +
theme(legend.position="right") +
guides(fill=guide_legend(ncol=4, title="Ecosystem Service Sub Categories"))+
xlab("Ecosystem Service Type") +
ylab("Number of times each ecosystem service was evaluated")
#加载库
图书馆(GG2)
#创建假设数据帧
服务Ha!虽然哈德利确认ggplot2不可能在本地实现(见评论中的链接),但有一种非常老练的方法,它受到ggplot2中具有相关传说的最大美学数量的限制
我所做的是创建四个虚拟数据框,并在打印窗口外绘制四个不同的美学特征(大小、颜色、alpha、线型)。然后可以覆盖图例美学,使其看起来像填充颜色。关闭原始填充图例,瞧
我知道组的顺序和组内的顺序并不完全是你想要的,但它应该很容易随因子水平等而改变
原始绘图
新绘图
代码
#####################
#原始代码
#####################
#加载库
图书馆(GG2)
#创建假设数据帧
服务今天早上我遇到了一个类似的问题,于是想出了这个局部解决方案
ggplot(data = services,
mapping = aes(x = category, fill = interaction(category, subcategory, sep = ', '))) +
geom_bar() +
guides(fill = guide_legend(title = 'Category and subcategory'))
已经阅读了指南\u图例()
?是!我肯定已经看过了。尽管guide_legend()允许您调整图例的许多方面,例如行数和列数,但在这里您似乎无法调整每行或每列中显示的因子数。如果我错了,一定要解释!我很高兴能解决这个问题!公平地说,那么你也许可以从哈德利的推文中找到问题的答案:要获得更多帮助/override.aes()的示例,请查看这篇文章:嗯,还刚刚意识到,show\u col(hue\u pal())
给了我错误的十六进制代码,用于管理服务的蓝色。手动重置所有颜色(无论如何你都应该这样做,因为色调是一个很难区分的调色板)将解决此问题。劳拉,非常感谢你花时间找到解决此问题的方法!我真的很喜欢你的方法!我想剩下的一个问题是,为我的真实数据集手动写出所有颜色和服务的想法并不特别吸引人,因为我的数据集要大得多。我真的认为是时候为ggplot2构建一个简单的扩展了,它可以简单、快速、轻松地解决这类问题。。。无论如何,再次谢谢你!