Matlab中plot函数全功能解析

时间:2024-02-15 22:38:04

功能

二维曲线绘图

 

语法

plot(Y)
plot(X1,Y1,...)
plot(X1,Y1,LineSpec,...)
plot(...,\'PropertyName\',PropertyValue,...)
plot(axes_handle,...)
h = plot(...)
hlines = plot(\'v6\',...)

 

描述

plot(Y)如果Y是m×n的数组,以1:m为X横坐标,Y中的每一列元素为Y坐标,绘制n条曲线;如果Y是n×1或者1×n的向量,则以1:n为横坐标,Y为坐标表绘制1条曲线;如果Y是复数,则plot(Y)等效于plot(real(Y),imag(Y));其它使用情况下,忽略坐标数据中的虚部。

 

plot(X1,Y1,...)如果X和Y都是数组,按列取坐标数据绘图,此时它们必须具有相同的尺寸;如果X和Y其中一个是向量另一个为数组,X和Y中尺寸相等的方向对应绘制多条曲线;如果X和Y其中一个是标量另一个为向量,那么将绘制垂直X或者Y轴离散的点。

 

X

Y

 

备注

m×n

m×n

按列取坐标数据绘制n条曲线

X和Y必须具有相同的尺寸

1×n或n×1

m×n或n×m

自动匹配尺寸相同方向绘制m条曲线

任意四种组合,效果一样

m×n或n×m

1×n或n×1

同上

同上

1×1

1×n或n×1

绘制垂直X轴离散点

Y可以任意向量

1×n或n×1

1×1

绘制垂直Y轴离散点

X可以任意向量

 

plot(X1,Y1,LineSpec,...)通过参数LineSpec指定曲线的曲线属性,它包括线型、标记符和颜色。plot函数支持同时绘制任意组图形

 

plot(X1,Y1,LineSpec1,X2,Y2,LineSpec2,...)

 

此时完全等效于

 

plot(X1,Y1,LineSpec1,...)

hlod all

plot(X2,Y2,LineSpec2,...)

 

MATLAB中提供的线型属性有:

 

线型

说明

标记符

说明

颜色

说明

-

实线(默认)

+

加号符

r

红色

--

双划线

o

空心圆

g

绿色

:

虚线

*

星号

b

蓝色

:.

点划线

.

实心圆

c

青绿色

 

 

x

叉号符

m

洋红色

 

 

s

正方形

y

黄色

 

 

d

菱形

k

黑色

 

 

^

上三角形

w

白色

 

 

v

下三角形

 

 

 

 

右三角形

 

 

 

 

左三角形

 

 

 

 

p

五角星

 

 

 

 

h

六边形

 

 

 

需要说明的是,LineSpec中设置曲线线型、标识符和颜色三项属性时,控制符的顺序不受限制并可以省略或者部分省略。也就是说\'r-.*\'、\'-.r*\'、\'*-.r\'等形式是等效的,都表示使用红色点划线连接各个节点,各节点使用“*”标识。

 

plot(...,\'PropertyName\',PropertyValue,...)设置由plot创建的所有曲线句柄对象的属性,Line对象属性和属性值参见附录,具体设置参考下面的实例,当然可以使用set/get进行设置。

 

plot(axes_handle,...)指定坐标系,也就是在axes_handle坐标系中绘图,在没有指定时默认为gca。

 

h = plot(...)返回由plot创建的所有曲线句柄对象的句柄。每条曲线对应一个句柄,如果有n条曲线,则h为n×1的数组。

 

注意

在同时绘制多条曲线时,如果没有指定曲线属性,plot按顺序循环使用当前坐标系中ColorOrder和LineStyleOrder两个属性。

 

默认情况,MATLAB在每次调用plot函数时将ColorOrder和LineStyleOrder自动重置为DefaultAxesColorOrder和DefaultAxesLineStyleOrder。Default**属性我们可以自定义,有效期至MATLAB关闭,Matlab下次启动时将Default**属性重置为厂家设置(Factory)

 

set(0,\'DefaultAxesColorOrder\',’r|g|b|k’,...
      \'DefaultAxesLineStyleOrder\',\'-|-.|--|:\')

 

使用hold all命令可以阻止调用plot函数时自动重置ColorOrder和LineStyleOrder属性,而是循环使用。注意hold on只是使多次绘制的图形叠加(相当于NextPlot),但不能阻止属性重置。

 

另外我们可以通过下面四个属性设置标识符的颜色和大小

LineWidth——指定线宽

MarkerEdgeColor——指定标识符的边缘颜色

MarkerFaceColor——指定标识符填充颜色

MarkerSize——指定标识符的大小

注意上面四个属性是针对当前坐标系中所有曲线的

 

实例

% by dynamic

% see also http://www.matlabsky.com

% 2009.8.20

%

X=1:10;

% 两个都是数组,必须具有相同的尺寸

X1=[X;X;X]\';%10×3

Y1=rand(10,3)+1;%10×3

% 其中一个为向量,另一个为数组,自动匹配尺寸相等方向

X2=1:0.1:10;%1×91

Y2=[sin(X2);cos(X2)]\';%91×2

% 其中一个是标量,另一为矢量,绘制垂直坐标轴的离散点

X3=1:10;

Y3=-0.5;

fh=figure(\'numbertitle\',\'off\',\'name\',\'PLOT Usability Demo\');%创建figure对象

ah=axes;%创建axes对象

h=plot(...%返回所有曲线句柄

    ah,...%指定坐标系,可以省略,此时默认gca

    X1,Y1,...%坐标数据   

    \'-.^\',...%曲线属性,可以省略或部分省略,此时自动选择

    X2,Y2,...

    \'m-\',...

    X3,Y3,...

    \'o\',...%注意此组数据设置线型和颜色无效,因为默认绘制离散点

    \'LineWidth\',2,...%线宽

    \'MarkerEdgeColor\',\'k\',...%标识符边缘颜色

    \'MarkerFaceColor\',\'r\',...%标识符填充颜色

    \'MarkerSize\',8)%标识符大小

 

matlab plot语句在绘图时能不能标出特定(几个)点的值?

matlab plot语句在绘图时能不能标出特定(几个)点的值?比如y=sin(x),在x=pi/2和x=0.75pi这两个点标出y的值

x = linspace(0,2*pi,1000);
y = sin(x);
hold on;
plot(x,y,\'k-\');
posx = [pi/2 0.75*pi];
posy = sin(posx);
for i = 1:size(posx,2)
text(posx(i),posy(i),num2str(posy(i)));
end

 

* text(x,y,[num2str(x),\',\',num2str(y)])

matlab怎样标记函数曲线上的指定间隔点

有一函数,由20个点绘制成,但想标出等间隔的5个点即可

t = 1:20;

f = t.^2;

tt = linspace(1,20,5);

ff = tt.^2;

hold on;

plot(t,f);

plot(tt,ff,\'ro\');

hold off;

 

如何对matlab画出的曲线中的定点进行打标记(并进行标记)

思路:使用plot()函数将定点绘制出来,并且设置点的样式;如果需要文字标记的话,使用text()函数进行注释。

下面给出具体的示例:画出正弦函数在[0,2π]区间的曲线,同时标注出x=π/4的点。

1、计算曲线上的散点并绘图

打开matlab,在命令窗口输入如下代码:

>> x=0:pi/20:pi;    % x在[0,2π]均匀取值

>> y=sin(x);        % 正弦曲线y坐标

>> plot(x,y,\'b\')    % 绘制正弦曲线

>> x0=pi/4;        % x=π/4的点

>> y0=sin(x0);    % x=π/4的点

 

2、标记定点

继续使用plot()函数,将定点加入到绘图窗口:

>> hold on            % 禁止刷新图形,使新加的点可以绘制在前面的图形上

>> plot(x0,y0,\'rs\')    % 绘制x=π/4处的定点,参数\'rs\'表示点的样式为红色正方形

 

3、添加文字说明

>> text(x0,y0,[\'P(\' num2str(x0) \',\' num2str(y0) \')\'])

 

matlab中怎样在坐标轴上添加文字

比如说要标个单位,或者文字说明什么的

简单例子:
x=0:0.1:10;
y=x.^2;
plot(x,y);
xlabel(\'x坐标(可任意写)\');
ylabel(\'y坐标\');
text(2.5,6,\'可任意放\');