有不少研究者都采用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也会画出很丑的图,如上面的代码跑出来的图片如下:
可以看到,图片的坐标的标注字体很小,字体类型不好看,图例很小,还有其他各种缺点,使得整张看起来很空旷,不紧凑,美观不足。这样的图片放在论文中,怕是初审在编辑那一关就把你枪毙了。因此,接下来我将对代码进行改善,对图片进行编辑,得到一张更好看的,适合放在文章中的图片。
第二段代码:
%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自带的图片工具对上面的图片进行调整,使它更好看。点击上方“查看”–>“属性编辑器”,进入如下页面:
点击上方“插入”–>“文本框”,然后输入想附上的文本,我这里输入了“I: 3MR”和“II: 3R”,并且调节边框为无色,设置字体大小为16,加粗,新罗马体,得到下方的页面:
点击右上角的小箭头“取消停靠figure 1”,得到如下页面:
点击上方“工具”–>“编辑图形”,拉伸图例,得到如下页面:
点击上方“插入”–>“矩形”,画出矩形将图例套住,然后点击上方“查看”–>“属性编辑器”,将边框加粗,然后“取消停靠figure 1”,得到如下页面:
最终图片做完。点击上方“文件”–>“另存为”,存成png格式。
最终呈现效果:
可以看到,最终呈现的图片在字体,清晰度,大小,紧凑性各方面都有了很大改进,整体还是很好看的,适合插入论文中。
来源:CSDN
作者:Surpassall
链接:https://blog.csdn.net/weixin_39505820/article/details/104199230