欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MATLAB画图

程序员文章站 2022-07-11 11:50:39
...

有不少研究者都采用MATLAB进行绘图,因为MATLAB画图功能齐全又不失美观,接下来我将结合具体代码记录一下MATLAB画图的一些操作和心得。

第一段代码:

%Fig1.
close all
clear
syms w p c t d pe b we a
c=1; d=1; b=1;
a1 = (4*d*(512*c*d^3*t - b^3*c*t^4 + 8*b^3*c*t^4*(d/(8*(4*d - b*t)))^(1/2) - 320*b*c*d^2*t^2 + 36*b^2*c*d*t^3 + 512*b*c*d^2*t^2*(d/(8*(4*d - b*t)))^(1/2) - 160*b^2*c*d*t^3*(d/(8*(4*d - b*t)))^(1/2)))/(- b^3*t^3 + 36*b^2*d*t^2 - 384*b*d^2*t + 512*d^3);%>0
a0 = 4*c*d*t;
f1 = ezplot(a1,[0 2]);
axis([0 4 0 90])
hold on
f1 = ezplot(a0,[0 4]);
axis([0 4 0 90])
hold on
legend('\it a_1','\it a_0')
xlabel(['\fontsize{7.5} \it t'])
ylabel(['\fontsize{7.5} \it a'])
set(gca,'FontName','Times New Roman','FontSize',7.5)
title(' ')
set(findobj('Type','line'),'color','k') 
set(findobj('Type','line'),'LineWidth',2) 

首先如果不注意设置参数和图片大小比例的话,MATLAB也会画出很丑的图,如上面的代码跑出来的图片如下:
MATLAB画图
可以看到,图片的坐标的标注字体很小,字体类型不好看,图例很小,还有其他各种缺点,使得整张看起来很空旷,不紧凑,美观不足。这样的图片放在论文中,怕是初审在编辑那一关就把你枪毙了。因此,接下来我将对代码进行改善,对图片进行编辑,得到一张更好看的,适合放在文章中的图片。

第二段代码:

%Fig1.
close all
clear
syms w p c t d pe b we a
c=1; d=1; b=1; % 控制这些变量为定值,以便下面两个表达式只有两个变量,可以画出二维图
% a1 = @(t)(4*d.*(512*c*d^3.*t - b^3*c.*t.^4 + 8*b^3*c.*t.^4.*(d./(8*(4*d - b.*t))).^(1/2) - 320*b*c*d^2.*t.^2 + 36*b^2*c*d.*t.^3 + 512*b*c*d^2.*t.^2.*(d./(8*(4*d - b.*t))).^(1/2) - 160*b^2*c*d.*t.^3.*(d./(8*(4*d - b.*t))).^(1/2)))./(- b^3.*t.^3 + 36*b^2*d.*t.^2 - 384*b*d^2.*t + 512*d^3);%>0
% a0 = @(t)4*c*d.*t;
a1 = (4*d*(512*c*d^3*t - b^3*c*t^4 + 8*b^3*c*t^4*(d/(8*(4*d - b*t)))^(1/2) - 320*b*c*d^2*t^2 + 36*b^2*c*d*t^3 + 512*b*c*d^2*t^2*(d/(8*(4*d - b*t)))^(1/2) - 160*b^2*c*d*t^3*(d/(8*(4*d - b*t)))^(1/2)))/(- b^3*t^3 + 36*b^2*d*t^2 - 384*b*d^2*t + 512*d^3);%>0
a0 = 4*c*d*t;
figure(1)
f1 = ezplot(a1,[0 2]);  % 画隐函数,函数用字符串表示
set(f1, 'LineStyle', '-', 'LineWidth', 3, 'color', 'k')
axis([0 4 0 90])
hold on
f2 = ezplot(a0,[0 4]);
set(f2, 'LineStyle', '--', 'LineWidth', 3, 'color', 'k')
axis([0 4 0 90])
% gcf是获取图片对象(figure),gca是获取图片内的对象(axe)
% 'XTick'和'YTick'是在指定位置显示刻度,'position'内的四个参数,前两个是图片内对象起点坐标,后两个是图片内对象的宽和高
set(gca,'XTick', 0:1:4, 'YTick', 0:20:80, 'position', [0.15, 0.15, 0.8, 0.7]) 
% 'XTickLabel'和'YTickLabel'是显示刻度的具体字符
set(gca,'XTickLabel',{'0','1','2','3','4'}, 'YTickLabel', {'0','20','40','60','80'})
set(gca, 'FontSize', 14, 'Fontname', 'Times New Roman', 'FontWeight', 'bold') % 对刻度上的字符字体设置
set(gcf,'position', [150, 100, 500, 500]) % 'position'内的四个参数,前两个是图片起点坐标,后两个是图片的宽和高
[le, lg, ~, ~] = legend( {'a_1', 'a_0'}, 'FontName', 'Times New Roman', 'FontAngle', 'italic'); % 设置图例和它的字体, 并获得两个对象
set(le, 'Box', 'off')
p = get(le,'Position'); % 获得图例的坐标和宽高
p1 = lg(1).Position; % 获得图例内第一个函数图像的坐标
p2 = lg(2).Position; % 获得图例内第二个函数图像的坐标
lg(1).Position = [p1(1)-0.1 p1(2) 0.2]; % 设置图例内第一个函数图像的坐标
lg(2).Position = [p2(1)-0.1 p2(2) 0.2]; % 设置图例内第二个函数图像的坐标
lg(3).XData = [0.1 0.5]; % 设置图例内第一个函数图像,第一个参数表示图像距离左边框的距离,第二个表示图像线的长度
lg(5).XData = [0.1 0.5]; % 设置图例内第二个函数图像,第一个参数表示图像距离左边框的距离,第二个表示图像线的长度
xlabel('t', 'FontName', 'Times New Roman', 'FontSize', 14, 'FontWeight', 'bold', 'FontAngle', 'italic')
ylabel('a', 'FontName', 'Times New Roman', 'FontSize', 14, 'FontWeight', 'bold', 'FontAngle', 'italic')
title(' ')

呈现效果:

MATLAB画图
利用MATLAB自带的图片工具对上面的图片进行调整,使它更好看。点击上方“查看”–>“属性编辑器”,进入如下页面:
MATLAB画图
点击上方“插入”–>“文本框”,然后输入想附上的文本,我这里输入了“I: 3MR”和“II: 3R”,并且调节边框为无色,设置字体大小为16,加粗,新罗马体,得到下方的页面:
MATLAB画图
点击右上角的小箭头“取消停靠figure 1”,得到如下页面:
MATLAB画图
点击上方“工具”–>“编辑图形”,拉伸图例,得到如下页面:
MATLAB画图
点击上方“插入”–>“矩形”,画出矩形将图例套住,然后点击上方“查看”–>“属性编辑器”,将边框加粗,然后“取消停靠figure 1”,得到如下页面:
MATLAB画图
最终图片做完。点击上方“文件”–>“另存为”,存成png格式。

最终呈现效果:

MATLAB画图
可以看到,最终呈现的图片在字体,清晰度,大小,紧凑性各方面都有了很大改进,整体还是很好看的,适合插入论文中。

相关标签: matlab

上一篇: Socket网络编程基础

下一篇: SpringMVC