R 重置ggplot镶嵌面的每列中的颜色
我有一个小平面和颜色的绘图。颜色与“ID”相关,刻面的列与“类型”相关。一个ID始终属于同一类型,但每种类型中的ID数量不同。我想重置每一列面的颜色,使其在颜色上有更大的差异R 重置ggplot镶嵌面的每列中的颜色,r,ggplot2,dplyr,colors,facet,R,Ggplot2,Dplyr,Colors,Facet,我有一个小平面和颜色的绘图。颜色与“ID”相关,刻面的列与“类型”相关。一个ID始终属于同一类型,但每种类型中的ID数量不同。我想重置每一列面的颜色,使其在颜色上有更大的差异 ggplot(data = plt_cont_em, aes(x = Jahr, y = Konz)) + geom_point(aes(color=factor(ID))) + facet_grid(Schadstoff_ID ~ Type, scales = "free_y") 现在看来: 我明白,我必
ggplot(data = plt_cont_em, aes(x = Jahr, y = Konz)) +
geom_point(aes(color=factor(ID))) +
facet_grid(Schadstoff_ID ~ Type, scales = "free_y")
现在看来:
我明白,我必须为颜色引入一个虚拟变量。但是有没有一种简单的方法来计算每种类型中的ID,从每种类型中的1开始
因为数据是机密的,所以我创建了显示相同问题的虚拟数据
ID<-c()
Type<-c()
Jahr<-c()
Schadstoff<-c()
Monat<-c()
Konz<-c()
for (i in 1:25){
#i = ID
#t = Type
t<-sample(c("A","B","C"),1)
for (j in 1:5){
#j = Schadstoff
if(runif(1)<0.75){
for(k in 2015:2020){
#k = Jahr
for(l in 1:12){
#l = Monat
if(runif(1)<0.9){
ID<-c( ID,i)
Type<-c( Type,t)
Jahr<-c( Jahr,k)
Schadstoff<-c( Schadstoff,j)
Monat<-c( Monat,l)
Konz<-c( Konz,runif(1))
}
}
}
}
}
}
tmp<- data.frame(ID,Type, Jahr, Schadstoff, Monat, Konz)
tmp<-tmp %>% group_by( Type) %>% mutate( Color=row_number())
p<-ggplot(data = tmp, aes(x = Jahr, y = Konz)) +
geom_point(aes(color=factor(Color)), size=0.8) +
facet_grid(Schadstoff ~ Type, scales = "free") +
theme_light() + theme(axis.text.x = element_text(angle = 45, hjust = 1))
p
ID使用dplyr
您可以按
类型分组,并使用ID
在每个组中的密集等级创建一个新列:
plt_cont_em %>%
group_by(Type) %>%
mutate(Type_ID = dense_rank()) %>%
ggplot() +
...
这将在组中对每个ID从最小到最大进行“排序”,以相同的值保存具有相同ID的记录
你可能会想排除这个传说,因为它没有什么意义
库(dplyr)
图书馆(GG2)
#使用提供的随机数据
tmp%
分组依据(类型)%>%
变异(颜色=密集等级(ID))
ggplot(数据=tmp,aes(x=Jahr,y=Konz))+
几何点(aes(颜色=系数(颜色)),尺寸=0.8)+
小平面网格(Schadstoff~Type,scales=“free”)+
主题灯()
主题(axis.text.x=元素\文本(角度=45,hjust=1))
由(v0.3.0)于2020-04-02创建谢谢!不知何故,该组不起作用,现在每行都有一个唯一的行号。此外,我想在图例中保留ID,因为它们稍后将被名称替换,但可能更容易为每种类型绘制一个图,因为只有3种类型。如果没有实际数据,很难知道发生了什么。试着用dput(plt\u cont\u em)
的输出编辑这个问题,因为数据是机密的(而且非常庞大),所以我不能在这里发布输出。但是我在我的第一篇文章中添加了一个随机数据生成器。啊,我明白了,每个ID在类型中都是重复的。更新我的答案