私は数十のプロットを作成する必要があるデータセットを持っています。 データは30のグループと各グループ内のいくつかの測定値で構成されています。ggplot2のグループカラーを手動で設定する
ほとんどのプロットは、すべてのグループを一度に使用するわけではありません。
私の目標は、任意のグループがすべてのグラフで同じ色になるように、グループのセットに対して1つのカラーパレットを作成することです。 以下の例では、Group C
はPlot 1
と同色で、Plot 2
と同じ色です。
私の質問はこれについてどうやって行くかです。
私はscale_fill_manual(および必要に応じてscal_color_manual)のいくつかのバリエーションを試しました。 パレットをグループでインデックスすることはできません。グループに対応する色を「スキップ」することはできません。
また、プロットされているデータの列としての色情報が含まれていますが、この列をグループの色として使用する方法がわかりません。
# 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"))