我的数据集看起来类似于
df <- data.frame(name = rep(letters[1:4], each = 3), category = rep(1:2, each = 6),
time = rep(1:3, times = 4), value = sample(1:100, 12))
我想要一个堆叠的条形图,以显示每个名称随时间的价值,但我希望这些名称根据其类别具有不同的配色方案。
在此示例中,我有一个像这样的情节
现在,我希望名称a和b与名称c和d具有不同的配色方案,因为它们属于不同的类别。我知道我可以根据类别进行分类,但是出于某些特殊原因,我希望所有信息都显示在一张图表上。我该怎么办?
答案 0 :(得分:2)
一个选项:
df$cat.time <- paste0(df$category, ".", df$time)
ggplot(df, aes(x=name, y=value, fill=factor(cat.time))) + geom_bar(stat="identity")
结果:
然后您可以使用scale_fill_manual
来调整配色方案:
pal <- c(colorRampPalette(c("yellow", "DarkGreen"))(3),
colorRampPalette(c("red", "NavyBlue"))(3))
ggplot(df, aes(x=name, y=value, fill=factor(cat.time))) +
geom_bar(stat="identity") + scale_fill_manual(values=pal)
答案 1 :(得分:1)