如何用matlab 作图?

您所在的位置:网站首页 matlab如何按行排序 如何用matlab 作图?

如何用matlab 作图?

2023-04-12 22:18| 来源: 网络整理| 查看: 265

Matlab科研论文自动出图及自定义导出

适合的读者群体:对用Matlab来制图感兴趣的零基础科研小白。

通过本文,你将了解到在Matlab中:

如何使用作图命令(以2维为例);如何批量读取具有特定内容格式的.txt文本文件(即包括绘图所需的 (x,y) 坐标点);如何调整图形的图例、颜色、标签、刻度值等使其更加美观;如何自动保存、输出图片为特定格式(.pdf/ .png/ .emf/ .eps);

使用的示例数据是在4组不同空气量对于燃烧温度在轴向位置分布情况,轴向位置分布作为X轴,对应的温度值作为Y轴,4个不同的空气量代表不同的工况,从而需要绘制不同的图例与曲线进行区别以便比较。

运行后,最终结果预览如下:

自动出图及保存

Matlab代码如下:

%% 双百分号代表一个节,在快捷键 Ctrl + Enter时可运行该节代码的结果 % 百分号表示注释,Matlab会自动忽略这一行的内容 % 清楚当前窗口的存在所有数据缓存和运行结果 clc ; close all; clear % 实现指定图片大小 % (本文指不随Figure窗口缩放操作而改变窗口中的绘图方框大小,而非Figure的大小) t = tiledlayout(1,1,'Padding','tight'); t.Units = 'centimeter'; % 以合适的长、宽值插入word(是对绘图方框大小进行设置), 尤其注意坐标轴的刻度值会影响实际图像的总尺寸 png_height = 10.09; png_width = 12.59; t.OuterPosition = [0.25 0.25 png_width png_height] % Location and size of the outer bounds, ... % specified as a vector of the form [left bottom width height] % 即将 t 的 OuterPosition 属性设置为 [0.25 0.25 3 3], 该向量中的前两个数字将布局定位在距离图窗左侧和底部边缘 0.25cm 的位置, % 后两个数字将布局的宽度和高度设置为 3 cm %顺延创建一个空白位置区域用以放置下一个图形(如果不hold on/hold all) nexttile; % 注意此处代码需放置在hold all之前, 否则会报错(提示与后面的legend冲突) % % 保持在同一绘图框中进行绘图而不创建新的Figure窗口 hold all % 正文: 预设置图例、线条、颜色&读取文件&设置坐标轴刻度、范围 % 开始指定读取文件数量,本文示例为4个.txt文本,因而设定为4 numfiles = 4; % 预先创建一个numfiles by numfiles数量的零矩阵 % (续)用以存放所生成的plots数量,每次存储只用到一行(从第一行开始) % (续)使用时控制行不变,按列读取 plots_label = zeros(numfiles); % 设置图例、线条、颜色 % 预先设置好图例(本文示例文件为4个,因而设定4个不同的工况值) legends_notation = {'\phi = 0.4','\phi = 0.5','\phi = 0.6','\phi = 0.7'}; % 对每条线的颜色和线条进行单独调整, 通过数组在前面统一设定对应的线形以及颜色等相关属性 % (续)在后面只用一个set()即可调用此处预设的各个值,这样做比较简单方便和统一 % Tips: 针对单元数组(cell), content indexing采用{}进行单元内容的访问(Using curly braces);而()用于访问该单元位置; % 设置通用属性: cell_color = {'red', 'green', 'blue', 'black'}; % 颜色可选 cell_linestyle = {'-.', ':', '--', '-'}; % 线型可选 cell_marker = {'*', 'diamond', 'pentagram', 'hexagram'}; % 数据点标形状可选 cell_makeredgecolor = {'red', 'green', 'blue', 'black'}; % 数据点标记形状的轮廓颜色可选 cell_makerfacecolor = {'red', 'green', 'blue', 'black'}; % 数据点标记形状的填充颜色可选 cell_markersize = {[8 ; 8; 9 ; 8]}; % 数据点标记形状的尺寸可选 % test_ans = cell_markersize{1,1}(2) % 测试cell_markersize{1,1}(n) , 其中n为cell_markersize的顺序角标, 按列优先原则进行索引 % % 读取文件名以编号区别的文本文件,储存到mydata中 mydata = cell(1, numfiles); % 当一个cell格式的数组读入text文本时,分为两部分内容储存,一个是data,一个是text for k = 1:numfiles myfilename = sprintf('H2-20-ratio-%d',k); % 注意是%d,链接k mydata{k} = importdata(myfilename); % 读取数据 x = mydata{1, k}.data(:, 1); %读取data表格中的第一列 y = mydata{1, k}.data(:, 2); %读取data表格中的第二列 % % Plot the data plots_label(k) = plot(x,y,'LineWidth',1.5) % 对每组(x,y)数据进行制图,并且设置统一线宽 % Tips: 对于二维数组,单下标索引方式采用列元素优先原则, % 即对按列(从第一列开始)对二维数组进行重新排列, % 取新的一维数组中的元素位置对应的值为原矩阵中的单下标; % Legend for different lines legend(plots_label(1:k),legends_notation(1:k), 'FontName', 'Roman', 'FontSize', 12, 'Location','NorthEast'); % legend的第一个参数为特定的图像plot值,第二个参数为对应的文字说明标注; % (续)因为涉及多图,考虑使用矩阵来实现对第一、第二个参数的替换,即可实现动态更新legend % Tips: 矩阵下标访问单个矩阵元素/矩阵的索引表达式 % A(:) 将矩阵A中的每列合并成一个长的列向量 % A(j:k) 返回一个行向量,其元素为A(j:k)中的第j个元素到第k个元素 % 实时绘图图像 pause(1) % 开启绘图背景中的网格虚线(可选) grid off grid minor % Limits values xstartlim = 0.0; % 根据查看所读取的x值来确定x、y的上、下限 xendlim = max(x); % (续)粗调建议从零or最小开始,比最大略大结束 ystartlim = min(y); yendlim = 2500; % 比max(y)略大结束 % Plots limits & Labels xlim([xstartlim xendlim]); % 设置x、y起止位置 ylim([ystartlim yendlim]); xlabel(' \fontname{宋体}轴向位置\fontname{Times new roman}/m'); % 设置x、y各自的坐标轴名称 ylabel(' \fontname{宋体}温度\fontname{Times new roman}/\circC'); % 对中、英文设置不同的字体 % X and Y Ticks set(gca,'XTick', xstartlim:0.05:xendlim); % 设置x、y刻度间隔 set(gca,'YTick', ystartlim:200:yendlim); % 线条与颜色的调用实现(由开头预设的 “线条、颜色调整” 代码和以下几行结合实现): set(plots_label(k), 'Color', cell_color{1,k}, ... % cell_color 'LineStyle', cell_linestyle{1,k}, ... % cell_linestyle 'Marker', cell_marker{1,k}, ... % cell_marker 'MarkerEdgeColor', cell_makeredgecolor{1,k}, ... % cell_makeredgecolor 'MarkerFaceColor', cell_makerfacecolor{1,k},... % cell_makerfacecolor 'MarkerSize', cell_markersize{1,1}(k))% cell_markersize % end % 正文:结束 % Object: 自动保存不同格式的图片 % f = gcf; % 获取当前图框中的图像内容 % print(f, 'line-svg-format.svg', 'ContentType ','vector') exportgraphics(f,'ratio-pdf-format.pdf','ContentType','vector','BackgroundColor','white') exportgraphics(f,'ratio-png-format.png','Resolution',600,'BackgroundColor','none') exportgraphics(f,'ratio-svg-format.emf', 'ContentType','vector','BackgroundColor','none') % 导入word exportgraphics(f,'ratio-eps-format.eps', 'ContentType','vector','BackgroundColor','green') %运行结果Figure中的图:Figure中的显示效果.pdf格式显示效果.png格式显示效果emf格式显示效果(选中文件ctrl + C,直接在Word中再ctrl + V,大小基本统一)总结

本人第一次使用Matlab,文中代码较多地查阅了官方文档,有些用法和问题解决来自前人经验,断断续续地耗时差不多2-3天,本文代码才得以不断完善,遂作笔记分享,如有不足,欢迎批评指正 :-)

文中示例数据:

H2-20-ratio-1607 · 百度网盘H2-20-ratio-2601 · 百度网盘H2-20-ratio-3608 · 百度网盘H2-20-ratio-4607 · 百度网盘



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3