matlab使用2-基础绘图

matlab使用2-基础绘图

文章目录

  • matlab使用2-基础绘图
    • [1. 二维平面绘图](#1. 二维平面绘图)
    • [2. 三维立体绘图](#2. 三维立体绘图)
    • [3. 图形窗口的分割](#3. 图形窗口的分割)

1. 二维平面绘图

matlab 复制代码
% 创建一些二维数据  
x = 0:0.01:10; 		% x轴的数据点,从0到10,间隔为0.01  
y = sin(x); 		% y轴的数据点,是x的正弦值  
  
% 使用plot函数绘制二维线图  
figure; 			% 创建一个新的图形窗口  
plot(x, y);			% 绘制二维线图  
  
% 添加标签和标题  
xlabel('x'); 		% x轴标签  
ylabel('sin(x)'); 	% y轴标签  
title('二维平面绘图:y = sin(x)'); % 图形标题  
  
% 还可以添加图例(如果需要的话)  
% legend('sin(x)'); % 在这个简单的例子中不需要图例  
  
% 显示网格(可选)  
grid on; 			% 打开网格  
  
% 设置坐标轴的范围(可选)  
% axis([xmin xmax ymin ymax]); % 设置x轴和y轴的范围  
  
% 调整图形大小和位置(可选)  
% set(gcf, 'Position', [left bottom width height]); % 调整图形窗口的位置和大小
  • 基本步骤

    • 创建二维数据
    • 新建幕布 + 绘制二维平面图
    • 图表配置:标题、标签、颜色等等
  • 图标配置相关

    • 颜色选项参数:

      颜色 字符
      r
      绿 g
      b
      y
      粉红 m
      c
      w
      k
    • 线性选项参数:

      线性 符号 示例
      实线 - ---
      虚线 -- ---------
      冒号线 : ...
      点画线 -. ---·---·---·
    • 数据标记点选项参数:

      符号 点类型
      ·
      + 十字号
      o 圆圈
      * 星号
      x 叉号
      s 正方形
      d 棱形
      ^ 上三角
      v 下三角
      < 左三角
      > 右三角
      p 五角星
      h 六角星
  • 二维平面图表-多线同一表

    matlab 复制代码
    % 创建一些二维数据  
    x = 0:0.01:10; 			% x轴的数据点  
    y1 = sin(x); 			% 第一条线的y值,是x的正弦值  
    y2 = cos(x); 			% 第二条线的y值,是x的余弦值  
      
    % 创建一个新的图形窗口  
    figure;  
      
    % 绘制第一条线(正弦曲线),红色,实线  
    plot(x, y1, 'r-');  
      
    % 保持当前的图形,以便添加更多线  
    hold on;  
      
    % 绘制第二条线(余弦曲线),蓝色,带圆圈标记的实线  
    plot(x, y2, 'b-');  
      
    % 添加标签和标题  
    xlabel('x');  
    ylabel('y');  
    title('二维平面绘图:y = sin(x) 和 y = cos(x)');  
      
    % 添加图例  
    legend('sin(x)', 'cos(x)');  
      
    % 显示网格(可选)  
    grid on;  
      
    % 释放图形保持状态,以便下一个plot命令创建新图  
    hold off; 				% 通常不需要显式调用hold off,除非你要确保后续plot命令创建新图

2. 三维立体绘图

  • 首先创建X和Y的网格数据

  • 然后使用这些网格数据和一个函数来计算Z的值

  • 然后,使用不同的函数来绘制三维图形

  • 示例:

    • 使用plot3绘制三维线图

      matlab 复制代码
      % 创建三维数据  
      x = linspace(0, 2*pi, 100);  
      y = linspace(0, 2*pi, 100);  
      [X, Y] = meshgrid(x, y);  
      Z = sin(sqrt(X.^2 + Y.^2));  
        
      % 绘制三维线图  
      figure;  
      plot3(X(:), Y(:), Z(:), 'b-');  
      title('三维线图');  
      xlabel('X');  
      ylabel('Y');  
      zlabel('Z');  
      grid on;
    • 使用surf绘制三维曲面图

      matlab 复制代码
      % 使用与上面相同的X, Y, Z数据  
      figure;  
      surf(X, Y, Z);  
      title('三维曲面图');  
      xlabel('X');  
      ylabel('Y');  
      zlabel('Z');  
      colorbar; % 添加颜色条  
      lighting gouraud; % 改进光照效果  
      camlight; % 添加光源
    • 使用mesh绘制三维网格图

      matlab 复制代码
      % 使用与上面相同的X, Y, Z数据  
      figure;  
      mesh(X, Y, Z);  
      title('三维网格图');  
      xlabel('X');  
      ylabel('Y');  
      zlabel('Z');
    • 使用contour3绘制三维等高线图

      matlab 复制代码
      % 使用与上面相同的X, Y, Z数据  
      figure;  
      contour3(X, Y, Z, 20); % 20表示等高线的级别数  
      title('三维等高线图');  
      xlabel('X');  
      ylabel('Y');  
      zlabel('Z');
  • 注意事项

    • meshgrid函数用于创建X和Y的网格数据,这在三维图形绘制中是必要的
    • :操作符用于将X、Y和Z的列向量转换为行向量,这在plot3中特别有用,因为plot3期望其参数是行向量
    • surfmeshcontour3等函数中,通常直接使用由meshgrid创建的二维网格

3. 图形窗口的分割

选择哪种方法取决于具体需求,例如想要创建的子图的数量、位置、样式以及是否需要与其他MATLAB功能(如工具栏、菜单等)集成等等

  • subplot 函数

    • subplot 函数用于在单个图形窗口中创建多个子图。你可以指定子图的网格位置和当前激活的子图

    • 示例:

      matlab 复制代码
      subplot(2, 2, 1);  % 创建 2x2 网格的第一个子图  
      plot(1:10);  
      subplot(2, 2, 2);  % 创建 2x2 网格的第二个子图  
      plot(10:-1:1);  
      subplot(2, 2, 3);  % 创建 2x2 网格的第三个子图  
      bar(1:5);  
      subplot(2, 2, 4);  % 创建 2x2 网格的第四个子图  
      pie([1 2 3 4]);
  • **axes **

    • axes 函数允许更精细地控制子图的位置和大小,可以通过指定位置向量和轴属性来定义轴的范围和样式

    • 示例:

      matlab 复制代码
      axes('Position', [0.1 0.1 0.4 0.4]);  % 创建一个轴,占据窗口的左下角  
      plot(1:10);  
      hold on;  % 保持当前轴上的图形,以便在同一轴上添加更多图形  
      plot(10:-1:1, 'r');  % 在同一轴上添加红色线条  
      axes('Position', [0.6 0.1 0.4 0.4]);  % 创建一个新的轴,占据窗口的右下角  
      bar(1:5);
  • appdesigner 或 GUIDE

    • 对于更复杂的图形用户界面(GUI),可以使用 MATLAB App Designer 或 GUIDE 工具来创建具有多个面板或轴的窗口
    • 这些工具提供了图形化的界面来设计和布局GUI组件
  • tiledlayout 和 nexttile

    • tiledlayoutnexttile 函数提供了一种更现代的方式来创建平铺的图形布局

    • 允许定义网格布局,并在这些网格中放置轴

    • 示例:

      matlab 复制代码
      tiledlayout(2, 2);  % 创建一个 2x2 的平铺布局  
      nexttile;  % 激活第一个轴  
      plot(1:10);  
      nexttile;  % 激活第二个轴  
      plot(10:-1:1);  
      nexttile;  % 激活第三个轴  
      bar(1:5);  
      nexttile;  % 激活第四个轴  
      pie([1 2 3 4]);
相关推荐
td爆米花12 分钟前
C#冒泡排序
数据结构·算法·排序算法
我曾经是个程序员14 分钟前
C#File文件基础操作大全
开发语言·c#
林浔090620 分钟前
QT信号槽
开发语言·qt
重生之绝世牛码23 分钟前
Java设计模式 —— 【结构型模式】享元模式(Flyweight Pattern) 详解
java·大数据·开发语言·设计模式·享元模式·设计原则
Allen Bright37 分钟前
【Java基础-26.1】Java中的方法重载与方法重写:区别与使用场景
java·开发语言
执着的小火车40 分钟前
02-18.python入门基础一基础算法
数据结构·python·算法·排序算法
梦茹^_^40 分钟前
排序算法(系列)
数据结构·python·算法·排序算法·希尔排序·基数排序·计数排序和桶排序
秀儿y42 分钟前
单机服务和微服务
java·开发语言·微服务·云原生·架构
ybq1951334543143 分钟前
javaEE-多线程案例-单例模式
java·开发语言
花开盛夏^.^1 小时前
Timsort算法
数据结构·算法·排序算法