在MATLAB中绘制点时的问题

时间:2015-11-03 13:43:14

标签: matlab

我试图在MATLAB中将两组点绘制成图表时遇到一些问题。我创建了两个矩阵,分别代表组,一组圆圈和另一组十字架。结果应如下图所示:

enter image description here 创建这两个组的代码是:

circles = [1 1; 2 1; 2 2; 2 3; 2 4; 3 2; 3 3; 4 1; 4 2; 4 3];
crosses = [1 2; 1 3; 1 4; 2 5; 3 4; 3 5; 4 4; 5 1; 5 2; 5 3];

plot(circles, 'ro');
hold on
plot(crosses, 'b+');
hold off;
axis([0,6,0,6]);

但是这段代码描绘了一张凌乱的图表,类似于下图:

enter image description here

绘图可能有什么问题?

1 个答案:

答案 0 :(得分:5)

Plot通常接受两个维度参数。如果提供了一个,那么元素将根据其索引进行绘制。

  

PLOT线性图。       PLOT(X,Y)绘制矢量Y与矢量X的关系。如果X或Y是矩阵,       然后将矢量绘制成矩阵的行或列,       无论哪个排队。如果X是标量而Y是矢量,则断开连接       创建线对象并将其垂直绘制为离散点       X

     

PLOT(Y)绘制Y与其索引的列。       如果Y是复数,则PLOT(Y)等效于PLOT(real(Y),imag(Y))。       在PLOT的所有其他用途中,忽略虚部。

     

可以获得各种线类型,绘图符号和颜色       PLOT(X,Y,S)其中S是由一个元素组成的字符串       来自以下任意或所有3列:

因为您需要单独提供xy,所以您可以轻松解决问题:

circles = [1 1; 2 1; 2 2; 2 3; 2 4; 3 2; 3 3; 4 1; 4 2; 4 3];
crosses = [1 2; 1 3; 1 4; 2 5; 3 4; 3 5; 4 4; 5 1; 5 2; 5 3];

plot(circles(:, 1), circles(:, 2), 'ro');
hold on
plot(crosses(:, 1), crosses(:, 2), 'b+');
hold off;
axis([0,6,0,6]);

此解决方案明确定义了x和y维度,因此不应该与绘图混淆,它会完全按照您希望的方式生成它。