matlab - 用Matlab的 'line'命令画一个正方形

标签 matlab plot matlab-figure

我正在尝试在 Matlab 上绘制一个正方形,特别是使用 line 命令,其角点位于 (0,0)、(0, rho)、(rho, 0) 和(罗,罗)

% create axes
x = linspace(0,10,100);
y = linspace(0,20,100);
rho = 2*pi;
% plot
figure;
A = line([0 0],[0 rho]);
B = line([0 0],[rho 0]);
C = line([0 rho],[rho rho]);
D = line([rho 0],[rho rho]);
fill(A,B,C,D,'b');

但是,D 行未能出现在我的图中,而且 fill 命令不起作用,尽管该部分实际上是可选的。我的主要问题是为什么上述行不会出现在图中

最佳答案

那是因为您没有正确指定框的坐标。请记住,line 接受两个向量,其中第一个向量是 x 坐标列表,第二个向量是 y 坐标列表。每对第 i (x, y) 都会从其前一个 (i-1)th 点到第 i 个点绘制一条线当然,第一点除外。 AB 绘制的线是同一线。对于CD 也可以这样说。只需修改语句即可正确划线。

用可爱的 ASCII 图形绘制方框以进行说明:

(0, rho)      (rho, rho)
------------------------
|                      |
|                      |
|                      |
|                      |
------------------------
(0, 0)           (rho, 0)

您需要画四条线。让我们逆时针遍历:

  1. (0, 0)(0, rho)
  2. (0, rho)(rho, rho)
  3. (rho, rho)(rho, 0)
  4. (rho, 0)(0, 0)

因此,将您的代码修改为:

rho = 2*pi;
A = line([0 0],[0 rho]);
B = line([0 rho],[rho rho]);
C = line([rho rho],[rho 0]);
D = line([rho 0],[0 0]);

顺便说一句,上面的代码以后可能无法移植。您将获得行句柄,这很好,因为您不使用它作为 fill 的输入。

我们终于得到:

enter image description here

将所有坐标放入两个向量中并调用 line 可能会更清晰。这也将使这个与 fill 配合得很好:

rho = 2*pi;
x = [0,   0, rho rho, 0];
y = [0, rho, rho,  0, 0];
line(x, y);
hold on;
fill(x, y, 'b');

请注意,我们对line使用了正确的约定,然后绘制它,然后填充它。如果遵循前面指定的逻辑,我们会从 (0, 0)(0, rho) 绘制一条线,然后从 (0, rho)(rho, rho),然后从 (rho, rho)(rho, 0),最后从 (rho, 0) 回到 (0, 0)。请注意,我们必须在开头和结尾使用原点 (0, 0) 以确保我们在正方形的底部边缘绘制线条。我们还使用 hold on 在您在图形上绘制的方形边界后面添加填充框。 fill 接受坐标向量,就像 line 一样。我们得到:

enter image description here

关于matlab - 用Matlab的 'line'命令画一个正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44656023/

相关文章:

windows - Windows 上的 Jenkins - Matlab 不退出

matlab - Matlab 中的 Knn 回归

R - ggplot2 - geom_histogram 中的右间隔选项

python - 将 3D 子图添加到 2D 集合中

string - MATLAB:将字符转换为自定义设置数字并返回的最快方法

matlab - 使用在 matlab/octave 中查找基于数字索引启动 circshift

r - scale_fill_discrete 和 scale_fill_manual - 图例选项混淆

Matlab:当我放大 plotyy 图时,yTicks 不会自动更新

matlab:KeyPressFcn 和 WindowKeyPressFcn 的区别

matlab - 在循环期间将数字保存在 matlab 中