添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
精彩文章免费看

MATLAB 绘图(二)


本次的内容涉及到除了线图以外的绘图,包括离散绘图、极坐标绘图、曲面绘图和统计绘图。

  • 离散绘图:茎干图、阶梯图和散点图
  • 极坐标绘图:polar前缀
  • 曲面绘图:surf 曲面图和 mesh 网格图
  • 统计绘图:条形图、统计直方图和饼状图
  • subplot 函数指的是将当前图窗划分为 m × n 网格,并在编号 p 指定的位置创建坐标区。

    编号规则为:从第一行自左向右递增。

    % subplot(m,n,p);
    % 将绘图窗口分为 m 行 n 列的矩形区域
    % 并在编号第 p 的区域中绘图
    figure();
    % 2*2 分割的第一块区域也就是左上角
    subplot(2,2,1); 
    x = linspace(-3.8,3.8);
    y_cos = cos(x);
    plot(x,y_cos);
    title('Subplot 1: Cosine')
    % 2*2 分割的第二块区域也就是右上角
    subplot(2,2,2);
    y_poly = 1 - x.^2./2 + x.^4./24;
    plot(x,y_poly,'g');
    title('Subplot 2: Polynomial')
    % 2*2 分割的第三、四块区域也就是下方
    subplot(2,2,[3,4]);
    % 也可以写作 subplot(2,1,2); 指的是同一区域。
    plot(x,y_cos,'b',x,y_poly,'g');
    title('Subplot 3 and 4: Both')
    

    我们直到直角坐标和极坐标系都是常用的坐标系,并且两种坐标系之间存在一定的转换关系,但是用 plot 函数绘制转换后的极坐标系图形总是不美观。

    polar 函数是 MATLAB 中用于绘制极坐标图的函数。

    polar 函数已经被 MATLAB 官方更替,更推荐使用的是新的函数方法:polarplot (新方法在旧版本的 MATLAB 如 2015b 版本仍不可用)。因此如果你在使用旧版本软件,使用 polar 方法;如果你在使用的版本支持 polarplot 函数,那就使用 polarplot 函数。

    polarplot 函数就是极坐标系下的 plot 函数。以 polarplot(theta,rho) 形式调用。

    theta = 0:0.01:2*pi; % 角度
    rho = sin(2*theta).*cos(2*theta); % 幅值
    figure(1);
    polarplot(theta,rho); 
    % 此处有版本兼容问题,旧版本无法使用该函数
    % 旧版本应当使用 polar(theta,rho);
    

    surf 函数

    surf 函数将创建一个三维曲面图。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度;此外,函数将对三维曲面进行渲染,每个区域的颜色与高度成比例。

    x0 = 1:0.5:10;
    y0 = 1:20;
    [X,Y] = meshgrid(x0,y0);
    % meshgrid 函数将创建两个由 x0*y0 构成的二维网格矩阵。
    % X 表示网格中对应位置的 x0 值
    % Y 表示网格中对应位置的 y0 值
    % - 可以预见到对于同一个 y0 ,x0 值相同。
    Z = sin(X) + cos(Y);
    surf(X,Y,Z);
    

    mesh 函数

    surf 函数将创建一个三维曲面图。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度;函数仅对于三维网格进行渲染,每个区域的颜色与高度成比例。

    [X,Y] = meshgrid(-8:.5:8);
    R = sqrt(X.^2 + Y.^2) + eps;
    Z = sin(R)./R;
    figure(1);
    mesh(Z);
    

    由于统计图表有着多种形式的表现需求,这里使用子窗口绘图来实现。

    x = 190:1:200;
    y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
    z = [2 2 3; 2 5 6; 2 8 9; 2 11 12];
    figure(1);
    subplot(2,3,1);
    bar(y);
    subplot(2,3,2);
    bar(y,'r')
    subplot(2,3,3);
    bar(x,y);
    subplot(2,3,4);
    bar(y,0.4);
    subplot(2,3,5);
    bar(z);
    subplot(2,3,6);
    bar(z,'stacked')
    

    本节中提到除了线图以外的另外四种常见绘图:离散绘图、极坐标绘图、曲面绘图和统计绘图。

    值得一提的是,对于极坐标绘图的函数方法,官方已经给出更佳的更新,但旧版本中无法应用,这里给出的为新版本的方案。