MATLAB——二维图形绘制

1.二维图线

(1)plot函数

(1)plot函数的基本用法:
plot(x,y)(其中,x和y分别用于存储x坐标和y坐标数据。通常,x和y为长度相同的向量。)

例1  绘制一条折线。
    x=[2.5, 3.5, 4, 5];
    y=[1.5, 2.0, 1, 1.5];
    plot(x, y)

(2)最简单的plot函数调用格式
plot(x) 当plot函数的参数x是复数向量时,则分别以该向量实部和虚部为横、纵坐标绘制出一条曲线。

x=[2.5,3.5,4,5];
y=[1.5,2,1,1.5];
cx=x+y*i;     %也可写为cx=complex(x,y);
plot(cx)

(3)plot(x,y)函数参数的变化形式

  • 当x是向量,y是矩阵时
    1.如果矩阵y的列数等于x的长度,则以向量x为横坐标,以y的每个行向量为纵坐标绘制曲线,曲线的条数等于y的行数
    2.如果矩阵y的行数等于x的长度,则以向量x为横坐标,以y的每个列向量为纵坐标绘制曲线,曲线的条数等于y的列数

    例2  绘制sin(x)、sin(2x)、sin(x/2)的函数曲线。
     x=linspace(0,2*pi,100);              %创建一个0到2pi的含有100个元素的列向量
     y=[sin(x); sin(2*x); sin(0.5*x)];    %y为含有三个元素的行向量
     plot(x,y)
    
  • 当x,y为同型矩阵时
    以x、y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。

 t=0:0.01:2*pi;     
 t1=t';                 %创建创建一个0到2pi的含有100个元素的列向量(每个元素之间间隔为0.01)
 x=[t1, t1, t1];
 y=[sin(t1), sin(2*t1), sin(0.5*t1)];
 plot(x,y)

(4)含多个输入参数的plot函数

plot(x1,y1,x2,y2,...,xn,yn)

其中,每一向量对构成一组数据点的横、纵坐标,绘制一条曲线。

例3  采用不同个数的数据点绘制正弦函数曲线,观察曲线形态。
t1=linspace(0, 2*pi, 10);
t2=linspace(0, 2*pi, 20);
t3=linspace(0, 2*pi, 100);
plot(t1, sin(t1), t2,sin(t2)+1, t3, sin(t3)+2)

(5)含选项的plot函数

plot(x,y,选项)
其中,选项用于指定曲线的线型、颜色和数据点标记。
线型 实线
虚线
—. 点划线
_ _ 双划线
颜色 r 红色
g 绿色
b 蓝色
w 白色
k 黑色
数据点标记 * 星号
o 圆圈
s 方块
p 五角星
^ 朝上三角符号
例4  用不同线型和颜色在同一坐标内绘制曲线及其包络线。
x=(0:pi/50:2*pi)';
y1=2*exp(-0.5*x)*[1,-1];
y2=2*exp(-0.5*x).*sin(2*pi*x);
x1=0:0.5:6;
y3=2*exp(-0.5*x1).*sin(2*pi*x1);
plot(x, y1, 'k:', x, y2, 'b--', x1, y3, 'rp')

需要注意的是,使用plot函数绘图时,先取得x、y的坐标,然后再绘制曲线,x往往采取等间距采样。
(如:绘制函数sin(1/x)的图形,采用plot函数往往无法反映静谧的变化趋势)

(2)fplot函数

(1)fplot函数的基本用法
fplot(f,lims,选项)其中,f代表一个函数,通常采用函数句柄的形式。lims为x轴的取值范围,用二元向量[xmin,xmax]描述,默认值[-5,5]。选项定义与plot函数相同。

例6  采用fplot函数绘制函数sin⁡(1/x)。
fplot(@(x) sin(1./x),[0,0.2], 'b')

(2)双输入函数参数的用法
fplot(funx,funy,tlims,选项)其中,funx、funy代表函数,通常采用函数句柄的形式。tlims为参数函数funx和funy的自变量的取值范围,用二元向量[tmin,tmax]描述。

  例7  已知螺旋线的参数方程,绘制曲线。 
  fplot(@(t)t.*sin(t), @(t)t.*cos(t), [0,10*pi], 'r')

2.绘制图形的辅助操作

(1)图形标注

  • (1)title(图形标题)
    基本使用方法:title(图形标题)

        例1  绘制[-2π,2π]区间的正弦曲线并给图形添加标题。
        x=-2*pi:0.05:2*pi;
        y=sin(x);
        plot(x,y)
        title('y=sin(x)')
        title({'MATLAB', 'y=sin(x)'})
    

在图形标题中使用LaTeX格式控制符,受该格式控制的部分要用大括号括起来。

title('y=cos{\omega}t') 
title('y=e^{axt}')
title('X_{1} {\geq}X_{2}')
title('{\bf   y=cos{\omega}t + {\betal}}')    %\bf:加粗,\it:斜体,\rm:正体

含属性设置的title函数

title(图形标题,属性名,属性值)

Color属性:用于设置图形标题文本的颜色。

title('y=cos{\omega}t','Color','r')

FontSize属性:用于设置标题文字的字号。

title('y=cos{\omega}t','FontSize','24')
  • (2)xlabel(x轴说明)
    ylabel(y轴说明)
    绘制[-2π,2π]区间的正弦曲线并给x轴添加标签。
    x=-2pi:0.05:2pi;
    y=sin(x);
    plot(x,y)
    title(‘y=sin(x)’)
    xlabel(’-2\pi \leq x \leq 2\pi’)
  • (3)text(x,y,说明)
    在前面的图形中添加文字说明。
    text(-2*pi, 0, ‘-2{\pi}’)
    text(3, 0.28, ‘\leftarrow sin(x)’)
  • (4)legend(图例1,图例2,…)
    例2 绘制不同频率的正弦曲线并用图例标注曲线。
    x = linspace(0, 2pi, 100);
    plot(x, [sin(x); sin(2
    x); sin(3*x)])
    legend(‘sin(x)’, ‘sin(2x)’, ‘sin(3x)’)

2.坐标控制

(1)axis函数:
1.基本用法:axis([xmin,xmax,ymin,ymax,zmin,zmax])
用于控制坐标轴的选择范围
2.其他用法:
axis equal:纵横坐标轴采用等长的刻度
axis square:产生正方形坐标系(默认为矩形)
axis auto:使用默认设置
axis off:取消坐标轴
axis on:显示坐标轴
(2)给坐标系加网络、边框
grid on/grid off/grid
box on/box off/box

例3  绘制sin(x)、sin(2x)、sin(x/2)的函数曲线并添加图形标注。
x=linspace(0,2*pi,100);
y=[sin(x); sin(2*x); sin(0.5*x)];
plot(x,y)
axis([0 7 -1.2, 1.2]) 
title('不同频率正弦函数曲线'); 
xlabel('Variable X');  ylabel('Variable Y'); 
text(2.5, sin(2.5), 'sin(x)'); 
text(1.5, sin(2*1.5), 'sin(2x)');
text(5.5, sin(0.5*5.5), 'sin(0.5x)');
legend('sin(x)','sin(2x)','sin(0.5x)')
grid on

3.图形保持

hold on/hold off/hold

例4   用图形保持功能绘制两个同心圆。
t = linspace(0,2*pi,100);
x = sin(t);  
y = cos(t);
plot(x, y, 'b')
hold on;        
plot(2*x, 2*y, 'r--')
grid on
axis([-2.2 2.2 -2.2 2.2])
axis equal

4.图形窗口的分割

subplot(m,n,p),其中m和n指定将图形窗口分成m*n个绘图区,p指定当前活动区。

划分2×2子图

subplot(2,2,1); 
x=linspace(0,2*pi,60);
y=sin(x);
plot(x,y);
title('sin(x)');
axis ([0,2*pi,-1,1]);

划分多子图

x=linspace(0,2*pi,60);
subplot(2,2,1)     
plot(x,sin(x)-1);
title('sin(x)-1');axis ([0,2*pi,-2,0])
subplot(2,1,2)     
plot(x,cos(x)+1);
title('cos(x)+1');axis ([0,2*pi,0,2])
subplot(4,4,3)      
plot(x,tan(x));
title('tan(x)');axis ([0,2*pi,-40,40])
subplot(4,4,8)        
plot(x,cot(x));
title('cot(x)');axis ([0,2*pi,-35,35])

3.其他形式的二维曲线

1.对数坐标图

semilogx(x1, y1, 选项1, x2, y2, 选项2, …)
semilogy(x1, y1, 选项1, x2, y2, 选项2, …)
loglog(x1, y1, 选项1, x2, y2, 选项2, …)

其中,semilogx函数x轴为常用对数刻度,y轴为线性刻度;semilogy函数x轴为线性刻度,y轴为常用对数刻度;loglog函数x轴和y轴均采用常用对数刻度。

例1  绘制1/的直角线性坐标图和三种对数坐标图。
x=0:0.1:10;
y=1./x;
subplot(2,2,1)
plot(x,y) 
title('plot(x,y)');grid on
subplot(2,2,2)
semilogx(x,y)    
title('semilogx(x,y)');grid on
subplot(2,2,3)
semilogy(x,y) 
title('semilogy(x,y)');grid on
subplot(2,2,4)
loglog(x,y) 
title('loglog(x,y)');grid on

(2)极坐标图

polar(theta, rho, 选项)    
其中,theta为极角,rho为极径,选项的内容与plot函数相同。

例2 按极坐标方程ρ=1-sin t绘制心形曲线。
t = 0:pi/100:2*pi;
r = 1-sin(t);
subplot(1,2,1)
polar(t,r)
subplot(1,2,2)
t1 = t-pi/2;
r1 = 1-sin(t1);
polar(t,r1)

2. 统计图
( 1)条形类图形
① 条形图
 bar函数:绘制垂直条形图。

bar(y,style)

其中,参数y是数据,选项style用于指定分组排列模式。
“ grouped”:簇状分组
“ stacked”:堆积分组

bar(x, y,style)

其中, x存储横坐标, y存储数据, y的行数必须与向量x的长度相
同。选项style用于指定分组排列模式。

 barh函数:绘制水平条形图。

例3 绘制分组条形图。

y=[1,2,3,4,5; 1,2,1,2,1; 5,4,3,2,1];
subplot(1,2,1)
bar(y)
title('Group')
subplot(1,2,2)
bar(y, 'stacked')
title('Stack')

例4 下表是某公司2015~2017年家电类商品1月份的销售数据,绘制条形图对比数据。

x=[2015,2016,2017];
y=[68,80,115,98,102;
75,88,102,99,110;
81,86,125,105,115];
bar(x, y)

② 直方图
 hist函数:绘制直角坐标系下的直方图。

hist(y)
hist(y, x)

其中,y是要统计的数据,x用于指定区间的划分方式。
若x是标量,则统计区间均分成x个小区间;
若x是向量,则向量x中的每一个数指定分组中心值,元素的个数为数据分组数。
x缺省时,默认按10个等分区间进行统计。

 rose函数:绘制极坐标系下的直方图。

rose(theta[,x])

其中,参数theta用于确定每一区间与原点的角度,选项x用于指定区间的划分方式。

例5 绘制服从高斯分布的直方图。
y=randn(500,1);
subplot(2,1,1);
hist(y);
title(‘高斯分布直方图’);
subplot(2,1,2);
x=-3:0.2:3;
hist(y,x);
title(‘指定区间中心点的直方图’)’)

例6 绘制高斯分布数据在极坐标下的直方图。
y=randn(500,1);
theta=y*pi;
rose(theta)
title(‘在极
坐标下的直方图’)

(2)面积类图形
① 扇形图
 pie函数

pie(x, explode)

其中,参数x存储待统计数据,选项explode控制图块的显示模式。

例7 某次考试优秀、良好、中等、及格、不及格的人数分别为:7、17、23、9、4,试用扇形统计图作成绩统计分析。
score = [5, 17, 23, 9, 4];
ex = [0,0,0,0,1];
pie(score, ex)
legend(‘优秀’, ‘良好’, '中等’, ‘及格’, ‘不及格’, …
‘location’, ‘eastoutside’)

② 面积图
 area函数

(3)散点类图形
 scatter函数:散点图
scatter(x, y, 选项, ‘filled’)
其中,x、y用于定位数据点,选项用于指定线型、颜色、数据点标记。
如果数据点标记是封闭图形,可以用选项‘filled’ 指定填充数据点标记。
该选项省略时,数据点是空心的。
 stairs函数: 阶梯图
 stem函数: 杆图

例8 以散点图形式绘制桃心曲线
t = 0:pi/50:2pi;
x = 16
sin(t).^3;
y = 13cos(t)-5cos(2t)-2cos(3t)-cos(4t);
scatter(x,y,‘rd’,‘filled’)

3.矢量类图形
compass函数:罗盘图
feather函数:羽毛图
quiver函数: 箭头图
quiver函数调用格式:
quiver(x, y, u, v)
其中, (x, y)指定矢量起点, (u, v)指定矢量终点。
x、y、u、v是同样大小的向量或同型矩阵,若省略x、y,则在x-y平面上均匀取若干个点作为起点。

你可能感兴趣的:(matlab)