MATLAB: построение графиков только с цветом, основанным на другой переменной - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу построить только точки данных.Теперь я могу построить точки, которые учитывают только один тип точек.Но мои данные содержат разные переменные столбца.Я хочу построить разные данные с разными переменными x и y из данных.Предположим, что я хочу построить переменную D для переменной A или переменную E для переменной year, но я хочу построить точки данных с разными цветами или разными типами точек: *, точка, ромб и т.д. на основе предположенияпеременная pub или переменная E.Теперь для colormap я хочу показать colormap рядом с рисунком, где будет показан диапазон значения переменной.Для точек другого типа точечные индексы будут предполагать другую переменную E.

Также первые данные должны иметь совершенно другую точку, чтобы их можно было различить.Мой код на самом деле показывает другую точку для этих данных, но он также отображается с другими.

Вот усеченные данные .

Может кто-нибудь помочь мне с этим?

Мой код:

T = readtable('Data.xlsx');

year = T.Year;
pub = T.Publication;
A = T.A;
B = T.B;
C = T.C;
D = T.D;
E = T.F;

% Plot Data
f = figure;
%hold on; grid on, box on;
plot(A, D,'*')
hold on;
plot(A(1), D(1),'d')

1 Ответ

0 голосов
/ 19 сентября 2018

Похоже, этот пример Matlab должен быть очень близок к тому, что вы хотите.Это график scatter (например, ваша команда plot(A,D,'*')), и его цветовая шкала изменяется в зависимости от третьей переменной c.

. Затем вы должны объединить это с командой hold on и графиком.первая точка с использованием другого стиля, подходящего по вкусу.Вы можете сделать что-то вроде следующего (я не загружал ваши данные, поэтому я буду использовать пример из предоставленной мной ссылки на matlab):

x = linspace(0,3*pi,200);     % Independent variable
y = cos(x) + rand(1,200);     % Dependent variable
c = linspace(1,10,length(x)); % Colour variable

% Plot all points except the first one using colours in c and size 50:
scatter( x(2:end), y(2:end), 50, c(2:end) );
hold on

% Plot first point differently: twice the size, and with a filled marker:
scatter( x(1), y(1), 100, c(1), 'filled');
legend({'Data','First point'});
hold off
...