Как сказано в комментарии, scatter
может принимать 4-й аргумент, который будет представлять цвет. Третий аргумент (тот, который вы используете с c
для каждой диаграммы рассеяния) управляет только размером.
Для вас способ вызова scatter
должен быть таким: scatter(x,y, size, colour , 'filled')
Внимательно прочитайте документацию по scatter
, чтобы лучше понять его использование.
Ниже приведен краткий пример того, как использовать его с 4 параметрами. Мне пришлось создать образцы данных, так как вы ничего не указали (я выбрал даты на оси x
, и я предположил, что вам нужен одинаковый размер для всех групп... но отрегулируйте это в соответствии с вашими потребностями).
Обратите внимание, что объект разброса имеет свойство с именем CData
. Это тот же размер, что и x
, и он содержит цвет для каждой точки данных (хорошо, индекс цвета в палитре рисунка). Это то, что мы используем, чтобы узнать классификацию вашей точки в функции подсказки данных. Вы можете напрямую изменить этот вектор CData
, если хотите изменить цвет в интерактивном режиме.
function h = scatter_datatip_demo
%// basic sample data
npts = 50 ;
nClass = 12 ; %// let's say we have 12 different class
x = round(now) + randi([-10 10],npts,1) ;
y = rand(size(x)) ;
s = ones(size(x))*40 ;
c = randi([1 nClass],size(x)); %// randomly assign a class for each point
%// Draw a single scatter plot (specifying the colour as the 4th input)
h.f = figure ;
h.p = scatter(x,y , s , c , 'filled') ; %// <== Note how scatter is called
colormap( jet(nClass) ) ;
%// add custom datatip function
set( datacursormode(h.f) , 'UpdateFcn',@customDatatipFunction );
function output_txt = customDatatipFunction(~,evt)
pos = get(evt,'Position');
hp = handle( get(evt,'Target') ) ; %// get the handle of the scatter plot object
ptClass = hp.CData( get(evt,'DataIndex') ) ; %// get the colour index of the current point
output_txt = { ...
'My custom datatip' , ...
['Date : ' , datestr(pos(1)) ] ...
['Class: ' , num2str(ptClass) ] ...
['Value: ' , num2str(pos(2),8)] ...
};
![demoimg](https://i.imgur.com/ooN8aGY.png)
person
Hoki
schedule
29.04.2015
X
,Y
или в другой переменной? - person Hoki   schedule 29.04.2015c
вscatter
может быть матрицей, а не вектором1x3
. Это все работает корректно. Спасибо. - person Little Bobby Tables   schedule 29.04.2015