MATLAB绘图根本6:MATLAB绘图根本

[复制链接]
发表于 2026-1-26 07:35:24 | 显示全部楼层 |阅读模式
参考书:《MATLAB{\rm MATLAB}MATLAB与学术图表绘制》(关东升)。


6.MATLAB绘图根本

6.1 MATLAB绘图根本流程
  1. % 1.创建图形窗口;
  2. % 1.1 创建一个空白图形窗口;
  3. figure;
  4. % 1.2 创建一个带有指定标题的图形窗口;
  5. figure('Name', '图形窗口');
  6. % 1.3 创建一个具有指定标题、位置、大小的图形窗口;
  7. % 位置参数:宽度800像素,高度600像素,放在屏幕左上角X=100,Y=100位置上;
  8. figure('Name', '自定义窗口', 'Position', [100, 100, 800, 600]);
  9. % 2.常用绘图函数;
  10. % 2.1 plot函数:用于创建线图,展示数据的趋势;
  11. % 2.2 scatter函数:用于创建散点图,显示数据点的分布和关系;
  12. % 2.3 bar函数:用于绘制柱状图,用于比较不同类别的数据;
  13. % 2.4 histogram函数:用于绘制直方图,用于显示数据分布的频率;
  14. % plot函数示例:
  15. x = 1:5;
  16. y = [2, 4, 6, 8, 10];
  17. plot(x, y, 'ro-');
  18. % 3.添加标题和标签;
  19. % 3.1 添加标题
  20. title('2024年汽车销售额数据趋势');
  21. % 3.2 添加标签
  22. xlabel('时间(月份)');
  23. ylabel('销售额(元)');
  24. % 4.添加图例
  25. legend('标签1', '标签2', '标签3', ...);
  26. % legend函数示例:
  27. x = 1:10;
  28. y1 = 5*x + 10;
  29. y2 = 4*x + 10;
  30. plot(x, y1, 'ro-');
  31. hold on;
  32. plot(x, y2, 'bs-');
  33. legend('函数y=5x+10', '函数y=4x+10');
  34. xlabel('x');
  35. ylabel('y');
  36. title('不同函数的趋势变化图');
  37. % 5.颜色映射
  38. % 5.1 颜色映射:根据数据的数值或其他属性来为不同的数据点或区域分配不同的颜色,使其更具可读性;
  39. % 5.2 内置颜色映射:MATLAB常见内置颜色映射,如:jet、hsv、hot、cool等;
  40. % 5.3 自定义颜色映射:使用colormap函数进行自定义颜色映射;
  41. % 颜色映射示例:
  42. x = 1:10;
  43. y = 5*x + 10;
  44. clmY = y;
  45. % colormap('jet');
  46. % colormap('hsv');
  47. % colormap('hot');
  48. colormap('cool');
  49. scatter(x, y, 100, clmY, 'filled')
  50. colorbar;
  51. xlabel('x');
  52. ylabel('y');
  53. title('x和y的关系图');
  54. % 6.显示网格线
  55. % 6.1 grid on命令
  56. x = 1:10;
  57. y = 5*x + 10;
  58. plot(x, y, '--');
  59. grid on;
  60. xlabel('x');ylabel('y');
  61. title('x和y的关系图');
  62. % 6.2 自定义网格线样式
  63. grid on;
  64. grid minor;                % 使用grid函数自定义网格线样式;
  65. set(gca, 'XGrid', 'on', 'YGrid', 'on', 'GridLineStyle', '--','MinorGridLineStyle', ':', 'GridColor', [0.7, 0.7, 0.7]);
  66. % 7.保存图形
  67. % 7.1 使用saveas函数保存图像;
  68. x = 1:10;
  69. y = 5*x + 10;
  70. plot(x, y, 'ro-');
  71. xlabel('x');
  72. ylabel('y');
  73. title('x和y的关系图');
  74. % 保存到指定的位置;
  75. saveas(gcf, 'D:\自动控制理论\MATLAB绘图\Images\ch05_05.png');
  76. % 7.2 使用print函数保存图像;
  77. x = 1:10;
  78. y = 5*x + 10;
  79. plot(x, y, 'ro-');
  80. xlabel('x');
  81. ylabel('y');
  82. title('x和y的关系图');
  83. dpi = 600;
  84. imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch05_05.png';
  85. print(imagePath, '-dpng', ['-r', num2str(dpi)]);
复制代码
  1. % ch06_01.m
  2. clear;
  3. clc;
  4. % 生成数据,绘制图像,保存图像;
  5. % 1.生成x,y数据;
  6. x = 1:0.5:20;
  7. y1 = 20 * x + 10;
  8. y2 = x .* x;
  9. y3 = 2 .* x .* x + 2 * x + 10;
  10. % 2.绘制图像;
  11. plot(x, y1, 'r:', x, y2, 'g-.', x, y3, 'b--');
  12. set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
  13. % 3.添加图例;
  14. legend('y1=20*x+10','y2=x*x','y3=2*x*x+2*x+10');
  15. % 4.添加标题和标签;
  16. xlabel('x值');ylabel('y值');
  17. title('不同函数的关系曲线图');
  18. % 5.保存图像;
  19. dpi = 600;
  20. imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch06_01.png';
  21. print(imagePath, '-dpng', ['-r', num2str(dpi)]);
复制代码

6.2 MATLAB子图和多图形


  • 创建子图
    1. % MATLAB中,使用subplot函数创建子图;
    2. % subplot函数允许在同一个图形窗口中划分多个子图区域,并在子图中绘制不同的图形或数据;
    3. % subplot函数语法:
    4. subplot(m, n, p)
    5. % 参数说明:
    6. % m:表示子图布局的总行数;
    7. % n:表示子图布局的总列数;
    8. % p:表示当前子图的位置,位置编号从左上角开始,按行从左到右,从上到下编号;
    9. % 子图1        子图2
    10. % 子图3        子图4
    复制代码
    1. % ch06_02.m
    2. clear;
    3. clc;
    4. % 创建子图基本示例:
    5. % 1.定义数据范围和函数关系;
    6. x1 = -4 * pi:0.01:4 * pi;
    7. y1 = sin(x1);
    8. x2 = -4 * pi:0.01:4 * pi;
    9. y2 = cos(x2);
    10. x3 = -4 * pi:0.01:4 * pi;
    11. y3 = sin(x3) + 2;
    12. x4 = -4 * pi:0.01:4 * pi;
    13. y4 = cos(x4) + 2;
    14. % 2.创建两行两列子图布局;
    15. subplot(2, 2, 1);
    16. % 3.使用plot函数进行绘图;
    17. plot(x1, y1, 'r');
    18. grid on;
    19. set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
    20. % 4.标签、标题设置;
    21. xlabel('x1');
    22. ylabel('y1');
    23. title('函数y=sinx曲线图');
    24. subplot(2, 2, 2);
    25. plot(x2, y2, 'g');
    26. grid on;
    27. set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
    28. xlabel('x2');
    29. ylabel('y2');
    30. title('函数y=cosx曲线图');
    31. subplot(2, 2, 3);
    32. plot(x3, y3, 'b');
    33. grid on;
    34. set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
    35. xlabel('x3');
    36. ylabel('y3');
    37. title('函数y=sinx+2曲线图');
    38. subplot(2, 2, 4);
    39. plot(x4, y4, 'c');
    40. grid on;
    41. set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
    42. xlabel('x4');
    43. ylabel('y4');
    44. title('函数y=cosx+2曲线图');
    45. % 5.高清保存图像;
    46. dpi = 600;
    47. imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch06_02.png';
    48. print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    复制代码
    1. % ch06_03.m
    2. clear;
    3. clc;
    4. % 柱状图子图示例:
    5. % 1.创建示例数据;
    6. x1 = 1:10;
    7. y1 = [2, 4, 7, 11, 16, 22, 29, 37, 46, 56];
    8. x2 = 1:10;
    9. y2 = [5, 8, 14, 20, 30, 41, 53, 67, 84, 100];
    10. x3 = 1:10;
    11. y3 = [1, 2, 3, 5, 8, 13, 21, 34, 55, 89];
    12. x4 = 1:10;
    13. y4 = [50, 45, 40, 35, 30, 25, 20, 15, 10, 5];
    14. % 2.创建一个两行两列子图布局;
    15. subplot(2, 2, 1);
    16. bar(x1, y1, 0.6, 'b');      % 创建蓝色柱状图
    17. title('数据集1柱状图');
    18. subplot(2, 2, 2);
    19. bar(x2, y2, 0.6, 'g');      % 创建绿色柱状图
    20. title('数据集2柱状图');
    21. subplot(2, 2, 3);
    22. bar(x3, y3, 0.6, 'r');      % 创建红色柱状图
    23. title('数据集3柱状图');
    24. subplot(2, 2, 4);
    25. bar(x4, y4, 0.6, 'c');      % 创建青蓝色柱状图
    26. title('数据集4柱状图');
    27. % 3.高清保存图像;
    28. dpi = 600;
    29. imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch06_03.png';
    30. print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    复制代码

  • 创建多图像
    1. % ch06_04.m
    2. clear;
    3. clc;
    4. % 使用figure函数创建多个图形窗口;
    5. % 1.定义数据范围和函数关系;
    6. x1 = -4 * pi:0.01:4 * pi;
    7. y1 = sin(x1);
    8. x2 = -4 * pi:0.01:4 * pi;
    9. y2 = sin(x2) + 2;
    10. x3 = -4 * pi:0.01:4 * pi;
    11. y3 = cos(x3) + 2;
    12. % 2.使用figure创建图形窗口;
    13. figure(1);
    14. plot(x1, y1, 'r');
    15. grid on;
    16. set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
    17. % 3.标签、标题设置;
    18. xlabel('x1');
    19. ylabel('y1');
    20. title('函数y=sinx曲线图');
    21. % 4.高清保存图像;
    22. dpi = 600;
    23. imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch06_04_01.png';
    24. print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    25. figure(2);
    26. subplot(1, 2, 1);
    27. plot(x2, y2, 'g');
    28. grid on;
    29. set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
    30. xlabel('x2');
    31. ylabel('y2');
    32. title('函数y=sinx+2曲线图');
    33. subplot(1, 2, 2);
    34. plot(x3, y3, 'b');
    35. grid on;
    36. set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
    37. xlabel('x3');
    38. ylabel('y3');
    39. title('函数y=cosx+2曲线图');
    40. dpi = 600;
    41. imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch06_04_02.png';
    42. print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表