参考书:《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。
6.MATLAB绘图基础
6.1 MATLAB绘图基本流程
% 1.创建图形窗口;
% 1.1 创建一个空白图形窗口;
figure;
% 1.2 创建一个带有指定标题的图形窗口;
figure('Name', '图形窗口');
% 1.3 创建一个具有指定标题、位置、大小的图形窗口;
% 位置参数:宽度800像素,高度600像素,放在屏幕左上角X=100,Y=100位置上;
figure('Name', '自定义窗口', 'Position', [100, 100, 800, 600]);
% 2.常用绘图函数;
% 2.1 plot函数:用于创建线图,展示数据的趋势;
% 2.2 scatter函数:用于创建散点图,显示数据点的分布和关系;
% 2.3 bar函数:用于绘制柱状图,用于比较不同类别的数据;
% 2.4 histogram函数:用于绘制直方图,用于显示数据分布的频率;
% plot函数示例:
x = 1:5;
y = [2, 4, 6, 8, 10];
plot(x, y, 'ro-');
% 3.添加标题和标签;
% 3.1 添加标题
title('2024年汽车销售额数据趋势');
% 3.2 添加标签
xlabel('时间(月份)');
ylabel('销售额(元)');
% 4.添加图例
legend('标签1', '标签2', '标签3', ...);
% legend函数示例:
x = 1:10;
y1 = 5*x + 10;
y2 = 4*x + 10;
plot(x, y1, 'ro-');
hold on;
plot(x, y2, 'bs-');
legend('函数y=5x+10', '函数y=4x+10');
xlabel('x');
ylabel('y');
title('不同函数的趋势变化图');
% 5.颜色映射
% 5.1 颜色映射:根据数据的数值或其他属性来为不同的数据点或区域分配不同的颜色,使其更具可读性;
% 5.2 内置颜色映射:MATLAB常见内置颜色映射,如:jet、hsv、hot、cool等;
% 5.3 自定义颜色映射:使用colormap函数进行自定义颜色映射;
% 颜色映射示例:
x = 1:10;
y = 5*x + 10;
clmY = y;
% colormap('jet');
% colormap('hsv');
% colormap('hot');
colormap('cool');
scatter(x, y, 100, clmY, 'filled')
colorbar;
xlabel('x');
ylabel('y');
title('x和y的关系图');
% 6.显示网格线
% 6.1 grid on命令
x = 1:10;
y = 5*x + 10;
plot(x, y, '--');
grid on;
xlabel('x');ylabel('y');
title('x和y的关系图');
% 6.2 自定义网格线样式
grid on;
grid minor; % 使用grid函数自定义网格线样式;
set(gca, 'XGrid', 'on', 'YGrid', 'on', 'GridLineStyle', '--','MinorGridLineStyle', ':', 'GridColor', [0.7, 0.7, 0.7]);
% 7.保存图形
% 7.1 使用saveas函数保存图像;
x = 1:10;
y = 5*x + 10;
plot(x, y, 'ro-');
xlabel('x');
ylabel('y');
title('x和y的关系图');
% 保存到指定的位置;
saveas(gcf, 'D:\自动控制理论\MATLAB绘图\Images\ch05_05.png');
% 7.2 使用print函数保存图像;
x = 1:10;
y = 5*x + 10;
plot(x, y, 'ro-');
xlabel('x');
ylabel('y');
title('x和y的关系图');
dpi = 600;
imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch05_05.png';
print(imagePath, '-dpng', ['-r', num2str(dpi)]);
% ch06_01.m
clear;
clc;
% 生成数据,绘制图像,保存图像;
% 1.生成x,y数据;
x = 1:0.5:20;
y1 = 20 * x + 10;
y2 = x .* x;
y3 = 2 .* x .* x + 2 * x + 10;
% 2.绘制图像;
plot(x, y1, 'r:', x, y2, 'g-.', x, y3, 'b--');
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
% 3.添加图例;
legend('y1=20*x+10','y2=x*x','y3=2*x*x+2*x+10');
% 4.添加标题和标签;
xlabel('x值');ylabel('y值');
title('不同函数的关系曲线图');
% 5.保存图像;
dpi = 600;
imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch06_01.png';
print(imagePath, '-dpng', ['-r', num2str(dpi)]);
6.2 MATLAB子图和多图形
-
创建子图
% MATLAB中,使用subplot函数创建子图; % subplot函数允许在同一个图形窗口中划分多个子图区域,并在子图中绘制不同的图形或数据; % subplot函数语法: subplot(m, n, p) % 参数说明: % m:表示子图布局的总行数; % n:表示子图布局的总列数; % p:表示当前子图的位置,位置编号从左上角开始,按行从左到右,从上到下编号; % 子图1 子图2 % 子图3 子图4
% ch06_02.m clear; clc; % 创建子图基本示例: % 1.定义数据范围和函数关系; x1 = -4 * pi:0.01:4 * pi; y1 = sin(x1); x2 = -4 * pi:0.01:4 * pi; y2 = cos(x2); x3 = -4 * pi:0.01:4 * pi; y3 = sin(x3) + 2; x4 = -4 * pi:0.01:4 * pi; y4 = cos(x4) + 2; % 2.创建两行两列子图布局; subplot(2, 2, 1); % 3.使用plot函数进行绘图; plot(x1, y1, 'r'); grid on; set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5); % 4.标签、标题设置; xlabel('x1'); ylabel('y1'); title('函数y=sinx曲线图'); subplot(2, 2, 2); plot(x2, y2, 'g'); grid on; set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5); xlabel('x2'); ylabel('y2'); title('函数y=cosx曲线图'); subplot(2, 2, 3); plot(x3, y3, 'b'); grid on; set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5); xlabel('x3'); ylabel('y3'); title('函数y=sinx+2曲线图'); subplot(2, 2, 4); plot(x4, y4, 'c'); grid on; set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5); xlabel('x4'); ylabel('y4'); title('函数y=cosx+2曲线图'); % 5.高清保存图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch06_02.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
% ch06_03.m clear; clc; % 柱状图子图示例: % 1.创建示例数据; x1 = 1:10; y1 = [2, 4, 7, 11, 16, 22, 29, 37, 46, 56]; x2 = 1:10; y2 = [5, 8, 14, 20, 30, 41, 53, 67, 84, 100]; x3 = 1:10; y3 = [1, 2, 3, 5, 8, 13, 21, 34, 55, 89]; x4 = 1:10; y4 = [50, 45, 40, 35, 30, 25, 20, 15, 10, 5]; % 2.创建一个两行两列子图布局; subplot(2, 2, 1); bar(x1, y1, 0.6, 'b'); % 创建蓝色柱状图 title('数据集1柱状图'); subplot(2, 2, 2); bar(x2, y2, 0.6, 'g'); % 创建绿色柱状图 title('数据集2柱状图'); subplot(2, 2, 3); bar(x3, y3, 0.6, 'r'); % 创建红色柱状图 title('数据集3柱状图'); subplot(2, 2, 4); bar(x4, y4, 0.6, 'c'); % 创建青蓝色柱状图 title('数据集4柱状图'); % 3.高清保存图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch06_03.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
-
创建多图像
% ch06_04.m clear; clc; % 使用figure函数创建多个图形窗口; % 1.定义数据范围和函数关系; x1 = -4 * pi:0.01:4 * pi; y1 = sin(x1); x2 = -4 * pi:0.01:4 * pi; y2 = sin(x2) + 2; x3 = -4 * pi:0.01:4 * pi; y3 = cos(x3) + 2; % 2.使用figure创建图形窗口; figure(1); plot(x1, y1, 'r'); grid on; set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5); % 3.标签、标题设置; xlabel('x1'); ylabel('y1'); title('函数y=sinx曲线图'); % 4.高清保存图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch06_04_01.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]); figure(2); subplot(1, 2, 1); plot(x2, y2, 'g'); grid on; set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5); xlabel('x2'); ylabel('y2'); title('函数y=sinx+2曲线图'); subplot(1, 2, 2); plot(x3, y3, 'b'); grid on; set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5); xlabel('x3'); ylabel('y3'); title('函数y=cosx+2曲线图'); dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch06_04_02.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);