Это делается путем делегирования событий. Событие будет привязываться к элементу-оболочке, но будет делегировано элементу селекторного класса. Вот как это работает.
$('.wrapper-class').on("click", '.selector-class', function() {
// Your code here
});
Элемент-оболочка-оболочка может быть любым ex. документа, тела или вашей обертки. Упаковщик должен уже существовать.
Если я правильно понял, единственное, чего не хватает, - это ручной выбор цветов, и в этом случае тот факт, что цвета происходят из квадрантов, является случайным. В противном случае, я боюсь, что что-то упустил.
Вы можете указать цветовую гамму, как и любую другую эстетику. В частности, 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'))