Matlab 不带'的绘图;plot()';功能
我试图学习图形对象在MATLAB中的工作原理。我试图在不使用plot函数的情况下创建一个plot,但我不明白它为什么不起作用 AFIK,当我使用plot函数时,它会创建图形、轴、线对象,然后相应地设置每个对象的属性。我试着这么做,但我得到的只是一个白色/空白的数字 我试图绘制一个正弦波,因此我的X和Y数据是:Matlab 不带'的绘图;plot()';功能,matlab,plot,Matlab,Plot,我试图学习图形对象在MATLAB中的工作原理。我试图在不使用plot函数的情况下创建一个plot,但我不明白它为什么不起作用 AFIK,当我使用plot函数时,它会创建图形、轴、线对象,然后相应地设置每个对象的属性。我试着这么做,但我得到的只是一个白色/空白的数字 我试图绘制一个正弦波,因此我的X和Y数据是: x = 0:0.1:2*pi; y = sin(x); 这是我的主要代码: figH = figure(); axis([-2, 2, -2, 2]); lineH = findobj(
x = 0:0.1:2*pi;
y = sin(x);
这是我的主要代码:
figH = figure();
axis([-2, 2, -2, 2]);
lineH = findobj(figH, 'type', 'line');
set(lineH, 'XData', x,...
'YData', y,...
'Color', 'r');
奇怪的是当我打字的时候
get(lineH)
我什么也没拿回来。我非常感谢您的提示和评论。您需要先创建
行
,然后才能找到它并更改属性。
e、 g
编辑:
直接创建和存储每个对象是一个好主意(而不是允许命令查找适当的图形、轴等…)
我懂了。这就是为什么
get(lineH)
没有返回任何内容。我认为创建一个图形将创建一条线,如果它尚未创建。为什么findobj(figH,'type,'line')
在没有行时不返回错误?它不是错误,因为它没有找到任何行-它只是返回一个空数组。考虑到你可以在一个图形上(在许多不同的轴上)有很多线条,所以当你创建一个图形时,没有办法创建这个对象。嗯,有道理。因此,我必须先创建一个line对象,然后再使用line()
设置其属性。我不必创建figure对象,因为line()
将创建它生存所需的图形。正确-但不是最佳做法-因为它可能最终找到错误的图形-请参见编辑以回答。
hLine = line ( x, y, .... );
% Then you can modify the properties, i.e.
set ( hLine, 'XData', x );
% etc...
hFig = figure;
hAx = axes ( 'parent', hFig );
hLine = line ( hAx, x, y, .... );