我有一个数据集,我必须从中制作几十个图。数据由 30 个组和每组内的几个测量值组成。
大多数地块不会一次使用所有组。
我的目标是为一组组提供一个单一的调色板,这样任何给定的组在所有图表中都是相同的颜色。在下面的示例中,这意味着和 中Group C
的颜色相同。Plot 1
Plot 2
我的问题是如何去做。
我已经尝试了 scale_fill_manual 的几种变体(以及 scal_color_manual,如果合适的话)。虽然颜色是从指定的调色板中选择的,但我似乎无法按组索引调色板,或者以其他方式“跳过”与缺失组对应的颜色
我还想尝试将颜色信息添加为正在绘制的数据的列,但我不确定如何使用该列作为组的颜色。
library(ggplot2)
library(data.table)
# SAMPLE DATA:
DT1 <- data.table(Name=c("C_sub1", "A_sub1", "A_sub2"), Value=c(2,5,3), Group=c("C", "A", "A"), key="Group")
DT2 <- data.table(Name=c("A_sub1", "B_sub1", "C_sub1", "C_sub2"), Value=c(4,3,6,3), Group=c("A", "B", "C", "C"), key="Group")
# SAMPLE Color Pallette
ColorsDT <- data.table(Group=LETTERS[1:5], Color=c("#333BFF", "#CC6600", "#9633FF", "#E2FF33", "#E3DB71"), key="Group")
# Add a column for Color, according to the Group
DT1[ColorsDT, Color := i.Color]
DT2[ColorsDT, Color := i.Color]
# A Basic Plot
simplePlot <- function(DT, tit)
ggplot(DT ,aes(x=Name, y=Value, fill=Group)) +
geom_bar(stat="identity") + xlab("") + ggtitle(tit)
# Tried sevearl variations of:
# + scale_fill_manual(values=ColorsDT$Color)
# Plot Them
grid.arrange(ncol=2, simplePlot(DT1, tit="Plot 1"), simplePlot(DT2, tit="Plot 2"))