如何在八度音阶中绘制垂直线?

时间:2014-09-07 02:54:32

标签: octave line-plot

使用Octave绘制垂直线的最佳方法是什么?

3 个答案:

答案 0 :(得分:4)

所以,我有两种方法。一,我找到了,另一个是我做的。

方法1:来自here

%% Set x value where verticle line should intersect the x-axis.
x = 0;
%% plot a line between two points using plot([x1,x2],[y1,y2])
plot([x,x],[-10,10]);

方法2:略有不同的方法,完全相同的结果

%% Setup a vector of x values
x = linspace(0,0,100);
%% Setup a vector of y values
y = linspace(0,10,100);
%% Plot the paired points in a line
plot(x,y);

我认为方法2可能会在绘图过程之前将更多信息写入内存并且它的行更长,所以在我看来,方法1应该是更好的选择。如果你更喜欢方法2,请确保你的x和y向量是相同的维度,否则你最终会得到一堆你想要的点。

答案 1 :(得分:0)

不幸的是, Octave 文档用于做显而易见的事情,可笑得很糟糕,没有可用的示例。在图的顶部绘制一条简单的线是一个。

如前所述,以八度为单位绘制 直线行是非常愚蠢的。这是浪费内存和处理过程。而是使用 line() 函数在绘图上方绘制

line()函数需要2个非标准的 x值 y值向量,而不是标准的A和点B的point-slope 参数,通常由(x1,y1)(x2,y2)表示。相反,您需要这样写: X=(x1,x2) Y=(y1,y2) 。从而使每个活着的灵魂感到困惑!

以下是使用八度音语言执行此操作的正确方法的示例:

pkg load statistics     % Need to load the statistics package
x = randn (1,1000);     % Normal Distribution of random numbers
clf; histfit(x)         % Make a histogram plot of x and fit the data
ylim ([-20,100])        % Change the plot limits (to lift graph up)

% Draw the (vertical) line between (0,-10) and (0,90)
line ("xdata",[0,0], "ydata",[-10,90], "linewidth", 3)

结果:

enter image description here

答案 2 :(得分:0)

表示法 (x1,x2),(y1,y2) 真的很混乱,而且不符合教科书。

无论如何,这是我的方式:

figure;
hold on;
% vertical line x=0
plot([0,0],[0,10]);
%horizontal line y=0
plot([0,10],[0,0]);
% vertical line x=2
plot([2,2],[0,10]);
hold off;

enter image description here