我试图在MATLAB中将两组点绘制成图表时遇到一些问题。我创建了两个矩阵,分别代表组,一组圆圈和另一组十字架。结果应如下图所示:
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]);
但是这段代码描绘了一张凌乱的图表,类似于下图:
绘图可能有什么问题?
答案 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列:
因为您需要单独提供x
和y
,所以您可以轻松解决问题:
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维度,因此不应该与绘图混淆,它会完全按照您希望的方式生成它。