数十のプロットを作成する必要があるデータセットがあります。データは、30 のグループと各グループ内のいくつかの測定値で構成されます。
ほとんどのプロットは、すべてのグループを一度に使用するわけではありません。
私の目標は、特定のグループがすべてのグラフで同じ色になるように、グループのセットに 1 つのカラー パレットを用意することです。以下の例で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"))