Скаттер с разными цветами - PullRequest
1 голос
/ 22 марта 2011

Если у меня есть

matrix=
    0.0494    2.3691
   -0.0973    0.8026
   -0.3040   -0.0861
   -0.0626    2.5688
   -0.4144    0.7054
    0.0633   -0.0991
   -0.8386   -1.2229
    1.8929    2.6260
    1.7687    2.3963
    1.8243   -0.5543
    1.9272   -0.3946
   -0.0682    1.7404
   -0.1180    2.2323
    0.4071   -0.1878
    0.6406    2.5602
   -0.2144    2.0014
    0.1091   -0.1874
   -0.1102    0.2922

Как бы вы нарисовали один столбец в цвете, а другой в другом цвете, или некоторые из них в одном цвете

scatter(matrix(:,1),matrix(:,2), 'b','+');

1 Ответ

6 голосов
/ 22 марта 2011

scatter не отображает каждый столбец отдельно. Это column 1 против column 2. Итак, каждая точка на диаграмме рассеяния состоит из обеих колонок. Другими словами, нет никакой разницы между scatter(x,y) и plot(x,y,'o'). Однако scatter имеет и другие функции, поэтому он доступен в качестве другой функции. Если вы просто пытались построить каждый столбец отдельно двумя цветами, вы можете просто сделать plot(matrix,'o'), и MATLAB должен автоматически назначить синий для первого столбца и зеленый для второго.

scatter также принимает цветовую карту в качестве аргумента. Поэтому, если вы намеревались построить половину своих данных (оба столбца) одним цветом, а остальные - другим, вы можете попробовать это

nRows=size(matrix,1);
red=repmat([1,0,0],fix(nRows/2),1);%# use fix so that you don't get an error if nRows is not even.
green=repmat([0,1,0],nRows-fix(nRows/2),1);
scatter(matrix(:,1),matrix(:,2),[],[red;green]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...