У меня есть набор данных, из которого я должен сделать несколько десятков графиков. Данные состоят из 30 групп и нескольких измерений в каждой группе.
Большинство графиков не будут использовать сразу все группы.
Моя цель состоит в том, чтобы для набора групп была одна единственная цветовая палитра, так что любая заданная группа имеет один и тот же цвет на всех графиках.
В приведенном ниже примере это означает, что 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"))