Mam zestaw danych, z którego muszę wykonać kilkadziesiąt działek. Dane składają się z 30 grup i kilku pomiarów w każdej grupie.Ręczne ustawianie kolorów grup dla ggplot2
Większość działek nie będzie używać wszystkich grup naraz.
Moim celem jest posiadanie jednej palety kolorów dla zestawu grup, tak aby dana grupa była tego samego koloru na wszystkich wykresach. W poniższym przykładzie oznaczałoby to, że Group C
jest tego samego koloru w Plot 1
i Plot 2
.
Moje pytanie brzmi: jak to zrobić.
Próbowałem kilka odmian scale_fill_manual (i scal_color_manual, jeśli jest to właściwe). Podczas gdy kolory są wybierane z wyznaczonej palety, nie mogę indeksować palety przez grupę lub w jakiś inny sposób "pomijać" kolory odpowiadające brakującej grupie
Pomyślałem także, aby spróbować dodać informacje o kolorze jako kolumna danych, które są drukowane, ale nie jestem pewien, jak użyć tej kolumny jako koloru dla grupy.
# 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"))