在特定时间绘制垂直线
Plot vertical lines at a certain time
我想在某个 "x"(标量)值处绘制一条线,因此每秒都会绘制一条具有特定值的垂直线。我知道绘制垂直线(不考虑时间)的一种方法是声明一个向量,如:
y=0:0.01:5;
或类似的东西:
y=3:0.01:6;
然后写plot(x,y);
此外,我已经使用 "pause" 参数绘制了 "animated" 绘图,但我不知道在这种情况下该怎么做。感谢您的帮助。
在 Matlab 中有几种绘制垂直线的方法。最简单的推荐是 line
函数:
line(X,Y) adds the line defined in vectors X and Y to the current
axes. If X and Y are matrices of the same size, line draws one line
per column.
想调用多少次就调用多少次。
h=line(X,Y)
会给你线的属性
另一种方式是
X= X0*(Y./Y)
然后
plot(X,Y)
将在点 X0 处绘制一条垂直线。您可以做的另一件事是使用上面的 line
函数从点 (X0, min(Y))
到点 (X0, max(Y))
画一条线,这是最优雅的解决方案。如果您尝试创建电影,则需要使用 h=line(X,Y)
访问该行的属性。要将线移动到新位置,您必须通过调用 set(h, Property, value)
来设置该线的属性。例如在你的电影中,你需要将它移动到一个新的位置,这样你就可以设置 属性。这样,通过最小的数据变化,您可以移动一条线或显示其加速。
我建议的另一种方法是将 plot
与 hold on
结合使用。使用 plot
,您只需指定两个点,每个点具有相同的 x
值,但 y
值可以更改为您想要的任何值。当您使用 plot
绘制点时,默认行为是在点之间绘制一条线。如果我们指定具有相同 x
坐标但不同 y
坐标的两个点,我们基本上会在这些点之间绘制一条垂直线。
例如,假设你想让每个 "second" 都有一条垂直线,我们可以这样做:
ystart = [-1 -2 -3 -1 -2 -3];
yend = [1 2 3 1 2 3];
figure; hold on;
for idx = 1 : numel(ystart)
plot([idx idx], [ystart(idx) yend(idx)]);
end
这是我们得到的:
我们定义了两个包含 6 个元素的数组,其中 ystart
表示起始 y
点,yend
表示结束 y
点。我们生成一个新图形,使用 hold on
在同一张图上绘制多条线,然后使用 for
循环和 plot
以便我们在两点之间画一条线:(x,y) = (idx, ystart(idx))
和 (x,y) = (idx, yend(idx))
。 idx
从 1 到 6。显然,您可以通过指定另一个数组来更改绘制 x
值的位置...称之为 x
:
x = 0:2:10; %// Time values
ystart = [-1 -2 -3 -1 -2 -3];
yend = [1 2 3 1 2 3];
figure; hold on;
for idx = 1 : numel(ystart)
plot([x(idx) x(idx)], [ystart(idx) yend(idx)]);
end
在这里,我们将从x = 0
开始绘制垂直线,直到x = 10
,步长为2。结果基本相同,但x
值会不同,以及绘制垂直线的位置。
我想在某个 "x"(标量)值处绘制一条线,因此每秒都会绘制一条具有特定值的垂直线。我知道绘制垂直线(不考虑时间)的一种方法是声明一个向量,如:
y=0:0.01:5;
或类似的东西:
y=3:0.01:6;
然后写plot(x,y);
此外,我已经使用 "pause" 参数绘制了 "animated" 绘图,但我不知道在这种情况下该怎么做。感谢您的帮助。
在 Matlab 中有几种绘制垂直线的方法。最简单的推荐是 line
函数:
line(X,Y) adds the line defined in vectors X and Y to the current axes. If X and Y are matrices of the same size, line draws one line per column.
想调用多少次就调用多少次。
h=line(X,Y)
会给你线的属性
另一种方式是
X= X0*(Y./Y)
然后
plot(X,Y)
将在点 X0 处绘制一条垂直线。您可以做的另一件事是使用上面的 line
函数从点 (X0, min(Y))
到点 (X0, max(Y))
画一条线,这是最优雅的解决方案。如果您尝试创建电影,则需要使用 h=line(X,Y)
访问该行的属性。要将线移动到新位置,您必须通过调用 set(h, Property, value)
来设置该线的属性。例如在你的电影中,你需要将它移动到一个新的位置,这样你就可以设置 属性。这样,通过最小的数据变化,您可以移动一条线或显示其加速。
我建议的另一种方法是将 plot
与 hold on
结合使用。使用 plot
,您只需指定两个点,每个点具有相同的 x
值,但 y
值可以更改为您想要的任何值。当您使用 plot
绘制点时,默认行为是在点之间绘制一条线。如果我们指定具有相同 x
坐标但不同 y
坐标的两个点,我们基本上会在这些点之间绘制一条垂直线。
例如,假设你想让每个 "second" 都有一条垂直线,我们可以这样做:
ystart = [-1 -2 -3 -1 -2 -3];
yend = [1 2 3 1 2 3];
figure; hold on;
for idx = 1 : numel(ystart)
plot([idx idx], [ystart(idx) yend(idx)]);
end
这是我们得到的:
我们定义了两个包含 6 个元素的数组,其中 ystart
表示起始 y
点,yend
表示结束 y
点。我们生成一个新图形,使用 hold on
在同一张图上绘制多条线,然后使用 for
循环和 plot
以便我们在两点之间画一条线:(x,y) = (idx, ystart(idx))
和 (x,y) = (idx, yend(idx))
。 idx
从 1 到 6。显然,您可以通过指定另一个数组来更改绘制 x
值的位置...称之为 x
:
x = 0:2:10; %// Time values
ystart = [-1 -2 -3 -1 -2 -3];
yend = [1 2 3 1 2 3];
figure; hold on;
for idx = 1 : numel(ystart)
plot([x(idx) x(idx)], [ystart(idx) yend(idx)]);
end
在这里,我们将从x = 0
开始绘制垂直线,直到x = 10
,步长为2。结果基本相同,但x
值会不同,以及绘制垂直线的位置。