按顺序更改散点图中每个点的颜色

时间:2015-02-05 04:07:12

标签: matlab matlab-figure scatter-plot

我是Matlab的新手,我试图分散绘图以绘制轴上的4个点。

例如

x = [0;0;1;-1];
y = [1;-1;0;0];
scatter(x,y);

我想要做的是在时钟方向上连续改变上图中一个坐标的颜色

enter image description here

如上图所示。

如果没有,我可以采取另一种方式吗?

提前致谢。

2 个答案:

答案 0 :(得分:3)

您可以向scatter添加第4个参数以设置颜色(第3个参数设置大小,您可以将其保留为空):

col = lines(4); % create 4 colors using the 'lines' colormap
scatter(x,y,[],col);

您可以使用其他一些颜色图(在Matlab中键入doc colormap以获取更多详细信息),或者只需输入一些数字向量即可使用当前的颜色图。

编辑我刚刚意识到你只想改变一点的颜色;你可以用(例如)col = [2 1 1 1]来做。

答案 1 :(得分:1)

您需要单独绘制每个点,获取每个点的句柄,然后在循环中按顺序更改其'color'属性:

%// Data
x = [-1;0;1;0]; %// define in desired (counterclockwise) order
y = [0;1;0;-1];
color1 = 'g';
color2 = 'r';

%// Initial plot
N = numel(x);
h = NaN(1,N);
hold on
for n = 1:N
    h(n) = plot(x(n), y(n), 'o', 'color', color1);
end
axis([-1.2 1.2 -1.2 1.2]) %// set as desired

%// Change color of one point at a time, and restore the rest
k = 0;
while true
    k = k+1;
    pause(.5)
    n = mod(k-1,N)+1;
    set(h(n), 'color', color2);
    set(h([1:n-1 n+1:end]), 'color', color1);
end

enter image description here