Ваша проблема проистекает из небольшого противоречия: я думаю, вы говорите ggplot, чтобы приписать эстетику c "fill" с помощью переменной "bin". Поскольку у «bin» есть только две возможности («1» или «2»), ggplot использует только 2 цвета. Он использует два первых цвета: зеленый и красный.
Я не уверен, что именно вы хотите, но если вы хотите, чтобы для каждого столбца был свой цвет, вам нужно либо изменить «bin», как в Пример ниже, или чтобы дать другой аргумент «fill», например, вы можете просто заменить «fill = bin» на «fill = hex». Но если вы хотите 4 цвета, тогда переменная, используемая в «заливке», должна иметь 4 разных значения (ниже я выбрал «bin», а значения - 1,2,3,4).
Пример :
Pct <- c(0.8026200, 0.1973800, 0.8316421, 0.1683579)
Site <- c("A","A","B", "B")
hex <- c("#53412F", "#B4A383", "#4E3B29", "#B6A37E")
##bin is defined in order it has a different value for each bar
bin <- c(1,2,3,4)
df <- as.data.frame(cbind(Site,Pct,hex,bin))
ggplot()+
geom_bar(aes(y=Pct, x=as.character(Site), fill=bin)
, data=df, stat="identity")+
theme_bw() +
scale_fill_manual(values=hex)
Результат:
Надеюсь, это прояснит вашу проблему!