根据 ggplot 循环中的分类变量更改颜色

问题描述 投票:0回答:0

我正在尝试根据分类变量“Colonizers”更改图中的线条颜色。这些图显示了具有适当级别的图例,但所有图的颜色都相同。

这是我的数据:

structure(list(period5 = structure(c(-11688, -11688, -7670, -14245, 
-7305, -13149, 7305, -2557, -10592, -14610), tzone = "America/Los_Angeles", class = "Date"), 
    Country = c("cameroun", "tchad", "tchad", "mali", "tchad", 
    "cameroun", "madagascar", "madagascar", "mali", "mali"), 
    n = c(4135L, 2725L, 2479L, 1803L, 1674L, 1264L, 1088L, 1032L, 
    863L, 761L), Independence.x = c(1960, 1960, 1960, 1960, 1960, 
    1960, 1960, 1960, 1960, 1960), Colonizers.x = c("France", 
    "France", "France", "France", "France", "France", "France", 
    "France", "France", "France"), Independence.y = c(1960, 1960, 
    1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960), Colonizers.y = c("France", 
    "France", "France", "France", "France", "France", "France", 
    "France", "France", "France"), Independence.x.x = c(1960, 
    1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960), Colonizers.x.x = c("France", 
    "France", "France", "France", "France", "France", "France", 
    "France", "France", "France"), Independence.y.y = c(1960, 
    1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960), Colonizers.y.y = c("France", 
    "France", "France", "France", "France", "France", "France", 
    "France", "France", "France"), Independence = c(1960, 1960, 
    1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960), Colonizers = c("France", 
    "France", "France", "France", "France", "France", "France", 
    "France", "France", "France")), row.names = c(NA, -10L), class = c("tbl_df", 
"tbl", "data.frame"))

代码:

df_period5$period5<-as.Date(df_period5$period5)

for (i in country_count$Country){ print(
filter(df_period5,Country==i)%>%complete(period5=seq.Date(min(period5), max(period5), by="year"))%>%mutate(n= ifelse(is.na(n), 0,   n))%>%
  ggplot(aes(x=period5, y=n, color=Colonizers))+geom_line(aes(colour = Colonizers))+
  ylab("Number of Objects")+
  theme(text=element_text(size=16,  family="serif")) +ggtitle(as.character(i)))+ scale_x_continuous( breaks =seq(1900-01-01,2019-01-01))+ scale_y_continuous(breaks=seq(0,5000,10)) 
}

对于这行不通的方式,我将不胜感激。谢谢!

r loops ggplot2
© www.soinside.com 2019 - 2024. All rights reserved.