Если я правильно понял, единственное, чего не хватает, это ручной выбор цветов, и в этом случае тот факт, что цвета происходят из квадрантов, является случайным.В противном случае, боюсь, я что-то упускаю.
Вы можете указать цветовую гамму, как и любую другую эстетику.В частности, scale_color_manual позволяет задать ему вектор строк, определяющий используемые цвета.
Таким образом, вы можете добавить в конце:
scale_color_manual(values = c('orange', 'yellow', 'black', 'grey'))
Вы хотите сопоставить определенный цвет сНа каждом возможном уровне вы можете дать ему именованный вектор:
scale_color_manual(values = c(Q4 = 'orange', Q2 = 'yellow', Q1 = 'black', Q3 = 'grey'))