Если вы качественно сопоставляете цвет для большого количества групп, ggplot автоматически присваивает цветовое соответствие очень близким цветам, что затрудняет просмотр, которые относятся к какому ключу и т.д. Чтобы проиллюстрировать:
require(ggplot2); require(stringr)
df = data.frame(x = letters, y = sample(20:100,26), lab=word("apple ball cat dog elephant frog goat hat ice jackal king lion mango nest owl parrot queen rabbit ship tomato umbrella van watch xylophone yatch zebra", 1:26))
p = ggplot(df, aes(x, y, fill=lab)) + geom_bar(stat="identity")
p + scale_fill_discrete()
Его можно смешивать с некоторыми случайными цветами вручную:
cols = rainbow(26, s=.6, v=.9)[sample(1:26,26)]
p + scale_fill_manual(values=cols)
.., что приводит к более полезному расщеплению радуги, но это кажется неуклюжим, все же оставляет некоторые цвета, сложенные вместе и, как правило, не идеальные. У ggplot есть собственный метод для достижения чего-то подобного (но, надеюсь, лучше)?