我有一个data.frame
,类似如下:更改配色方案
set.seed(100)
df <- data.frame(year = rep(2011:2014, 3),
class = rep(c("high", "middle", "low"), each = 4),
age_group = rep(1:3, each = 4),
value = sample(1:2, 12, rep = TRUE))
,我期待产生,由facet
-ing(由变量age_group
)三个地块,其类似于那些生产通过下面的代码:
library(ggplot2)
blue <- c("#bdc9e1", "#74a9cf", "#0570b0")
ggplot(df) + geom_bar(aes(x = year, y = value,
fill = factor(class, levels = c("high", "middle", "low"))),
stat = "identity") +
scale_fill_manual(values = c(blue)) +
guides(fill = FALSE)
然而,在每个面都有,所有的颜色是由自己指定不同的配色方案。
我似乎想怎么在这里上的一个更具体的版本:ggplot2: Change color for each facet in bar chart
因此,使用我所提供的数据,我希望通过age_group
其中填充拿到三方面-ED地块,分裂在每个图中给出class
的等级,并且所有颜色(总共9个)将由我自己手动指定。
编辑:为了清楚起见,我想与确实是由下面的代码提供给最终的小面:
ggplot(df) + geom_bar(aes(x = year, y = value,
fill = factor(class, levels = c("high", "middle", "low"))),
stat = "identity") +
scale_fill_manual(values = c(blue)) +
guides(fill = FALSE) +
facet_wrap(~ age_group)
与由class
可变颜色子集的控制的附加级。
这在很大程度上是一个非常好的和可重复的问题(很好的工作!),但我需要一些澄清。 (a)我很惊讶你的例子情节*不包括你想要的方面......只是添加'+ facet_wrap(〜age_group)'你想到的是什么?也许在你的例子中包括这一点。 (b)你对传奇有什么想法?一个具有所有年龄段/班级互动的传奇?或每个子区块的个别图例? – Gregor
我已经在上面的问题中添加了我想要的最后一个方面。根据你的假设,你是正确的,我只是想包括'facet(〜age_group)'。 你对这个传说的观点很有趣,我没有想到这一点。某种传说中,我可以有三种颜色的区块对应“高”,“中”和“低”等级,但是我认为这超出了ggplot的控制范围。我很欢迎你的建议。 – Ross
我有[这个老问题](http://stackoverflow.com/q/20129299/903061)关于在“网格”系统中制作“网格”传说 - 你可能会适应它。至于颜色,我只是将数据添加到类和age_group的组合中,然后填充(使用'paste'或'interaction'来创建新列)。我现在没有时间写出一个很好的答案,但如果没有其他人先做,我会尽力在以后找到时间。 – Gregor