Желаемый вывод
Таким образом, выходной график должен представлять имя сайта по оси x (NR_B, NR_C ....) и диаграмму для каждого года для каждого сайта с разными цветами.
Вам необходимо передать fill/color
как factor(Year)
. Это скажет ggplot
, что это отдельная категория.
ggplot(df, aes(x=Site, y=TP, fill=factor(Year))) +
geom_boxplot() +
theme(axis.text.x=element_text(angle = 45, hjust=1))+
scale_fill_brewer(palette = "Set3")+
theme(legend.position = "bottom")
Производит 
Это вне вопроса, но, учитывая природуданные, которые вы могли бы рассмотреть другой тип визуализации.
ggplot(df, aes(factor(Year), TP))+
geom_jitter(width = 0.2) +
facet_wrap(~Site, scales="free_y")
