在不同的图中分配 geom_bar 中的颜色
Assign colours in geom_bar in different plots
我有一个包含不同物种和观察年份的数据集(分为 3 个类别)。我现在想根据每年的观察结果为每个物种绘制一个图,并为每个年份类别(每个条)分配不同的颜色,但每个图中的颜色应该相同。
我厌倦了做 lapply
,然后用 geom_bar
做 ggplot
(见下面的代码)。我知道我可以用 geom_bar(fill = c("#e31a1c", "#ff7f00", "#33a02c")
分配颜色,但问题是,有些物种只在某些年份观察到,所以我得到一个错误,即美学与数据的长度不同。那么还有另一种方法可以将颜色分配给条形吗?
Species = c(rep("X", 7), rep("Y", 3), rep("Z", 4), "V", rep("W", 3))
Year = c("A", "A", "A", "B", "B", "C", "C","A", "A", "C","B", "B", "C", "C","A", "A", "B", "C")
df <- data.frame(Species, Year)
mylist = lapply(split(df, as.factor(df$Species)), function(memefin){
ggplot(memefin, aes(x = Year, fill = Year))+
geom_bar(fill = c("#e31a1c", "#ff7f00", "#33a02c"))+
ggtitle(memefin$Species)+
scale_x_discrete(breaks=c("A","B","C"),labels=c("2000-2004", "2005-2009", "2010-2014"), drop = F)
})
你走在正确的轨道上:
mylist = lapply(split(df, as.factor(df$Species)), function(memefin){
ggplot(memefin, aes(x = Year, fill = Year))+
geom_bar()+
ggtitle(memefin$Species)+
scale_x_discrete(breaks=c("A","B","C"),labels=c("2000-2004", "2005-2009", "2010-2014"), drop = F)+
scale_fill_manual(values=c("A"="#e31a1c","B"= "#ff7f00","C" ="#33a02c")) # just apply the colours to specific "Years"
})
我有一个包含不同物种和观察年份的数据集(分为 3 个类别)。我现在想根据每年的观察结果为每个物种绘制一个图,并为每个年份类别(每个条)分配不同的颜色,但每个图中的颜色应该相同。
我厌倦了做 lapply
,然后用 geom_bar
做 ggplot
(见下面的代码)。我知道我可以用 geom_bar(fill = c("#e31a1c", "#ff7f00", "#33a02c")
分配颜色,但问题是,有些物种只在某些年份观察到,所以我得到一个错误,即美学与数据的长度不同。那么还有另一种方法可以将颜色分配给条形吗?
Species = c(rep("X", 7), rep("Y", 3), rep("Z", 4), "V", rep("W", 3))
Year = c("A", "A", "A", "B", "B", "C", "C","A", "A", "C","B", "B", "C", "C","A", "A", "B", "C")
df <- data.frame(Species, Year)
mylist = lapply(split(df, as.factor(df$Species)), function(memefin){
ggplot(memefin, aes(x = Year, fill = Year))+
geom_bar(fill = c("#e31a1c", "#ff7f00", "#33a02c"))+
ggtitle(memefin$Species)+
scale_x_discrete(breaks=c("A","B","C"),labels=c("2000-2004", "2005-2009", "2010-2014"), drop = F)
})
你走在正确的轨道上:
mylist = lapply(split(df, as.factor(df$Species)), function(memefin){
ggplot(memefin, aes(x = Year, fill = Year))+
geom_bar()+
ggtitle(memefin$Species)+
scale_x_discrete(breaks=c("A","B","C"),labels=c("2000-2004", "2005-2009", "2010-2014"), drop = F)+
scale_fill_manual(values=c("A"="#e31a1c","B"= "#ff7f00","C" ="#33a02c")) # just apply the colours to specific "Years"
})