Четвертый аргумент для разброса позволяет вам указать цвет. С документация :
разброс (X, Y, S, C)
...
C определяет цвет каждого маркера. Когда C является вектором такой же длины, как X и Y, значения в C линейно отображаются на цвета в текущей цветовой карте. Когда C представляет собой матрицу размером 1 на 3, она определяет цвета маркеров как значения RGB. Если у вас есть 3 точки на диаграмме рассеяния и вы хотите, чтобы цвета были индексами в цветовой карте, C должен быть матрицей 3 на 1. C также может быть строкой цвета (см. ColorSpec для списка спецификаторов строки цвета).
Попробуйте что-то вроде:
X = rand(1, 10);
Y = rand(1, 10);
colour = randi(3, 1, 10)
colour =
2 1 3 1 3 1 2 2 3 1
scatter(X, Y, [], colour, 'filled');
![enter image description here](https://i.stack.imgur.com/L3HGS.png)
Если ваши наборы данных большие, и существует несколько разных цветовых категорий, я склонен считать, что использование plot с удержанием - это более быстрый способ построения.