许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  用代码控制Matlab图片的实用技巧

用代码控制Matlab图片的实用技巧

阅读数 3
点赞 0
article_banner

figure(1)刚画完,figure(2)一出来把figure(1)的内容覆盖了,回去看代码发现两个figure调用之间没加hold off,第二条plot直接在第一个图上接着画了。加一句close all在最前面,每个figure后面配clf,画之前清干净,不然后面的图叠在前面的上面。D:\Matlab_work\plot_scripts\basic_setup.m 里存着标准模板。

图形句柄这个东西用顺了效率翻倍。f = figure('Position',[100 100 800 600]),f就是窗口句柄,ax = gca返回当前坐标轴句柄,h = plot(x,y)返回曲线句柄。后面改属性不用重新画,set(h,'LineWidth',2,'Color','r')一次改完。想批量操作的时候,hs = findobj(gca,'Type','line')拿到所有曲线句柄,循环设属性。以前改个线宽要重新plot一遍,数据都读两遍,现在直接改句柄,数据不用重读。D:\Matlab_work\plot_scripts\handle_demo.m 里写了几个句柄操作的例子。

坐标轴的范围和刻度用axis和xticks配合。axis([0 10 -5 5])一次设完四个边界,xlim和ylim分开设也行。刻度用xticks(0:2:10),标签用xticklabels({'0','2','4','6','8','10'}),中间想跳过某个刻度就把那个值从xticks里删掉。网格grid on,主次网格都开用grid minor。坐标轴字体用set(gca,'FontSize',12,'FontName','Arial'),论文里中文用宋体或黑体,代码里设成SimSun或者SimHei,线宽设0.75到1磅,打印出来清楚。D:\Matlab_work\plot_scripts\axis_setup.m 里记着论文格式的参数。

图例位置用legend的Location参数调,'northeast'是默认的右上角,'best'让Matlab自己找空白最多的角落。图例框的边框用legend('boxoff')去掉,背景透明用legend('Color','none')。图例的字体和线宽跟着坐标轴走,不用单独设。多曲线图例顺序跟plot的顺序一致,plot(a)、plot(b)、plot(c),legend('a','b','c'),顺序反了图例跟曲线对不上,查的时候看颜色和线型。

如图。

双纵轴用yyaxis left和yyaxis right。左边画完调用yyaxis right,右边的坐标轴属性单独设,颜色跟左边的曲线颜色对应,蓝色曲线配蓝色轴,红色配红色,读图的时候不用来回看图例。右边的ylim和yticks单独设,跟左边完全独立。两个轴都画完之后,ax.YAxis(1)和ax.YAxis(2)分别改各自的属性,Color、FontSize、TickDirection都分开。D:\Matlab_work\plot_scripts\yyaxis_demo.m 里有个扭矩和转速的双轴图,左轴扭矩右轴转速。

子图用subplot(2,2,1)这种位置参数,或者tiledlayout(2,2)建一个布局对象,nexttile跳到下一个格子。tiledlayout的好处是自动对齐,subplot有时候格子之间的间距不均匀。每个tile的坐标轴属性单独设,gca返回当前tile的句柄。共享轴用linkaxes([ax1 ax2],'x'),两个子图的x轴联动,缩放一个另一个跟着动,对比不同工况的同一变量的时候省事。

保存图片用exportgraphics,比saveas清楚。exportgraphics(gcf,'D:\Matlab_work\out\fig1.png','Resolution',600),600DPI的PNG插进Word里放大不糊。矢量图用exportgraphics(gcf,'fig1.pdf','ContentType','vector'),PDF放大无限清晰。老版本用print(gcf,'-dpng','-r600','fig1.png'),效果一样。保存之前把背景设成白色,set(gcf,'Color','w'),不然默认的灰色背景打印出来费墨。D:\Matlab_work\plot_scripts\export_setup.m 里存着几个导出参数的模板。

中文字体乱码的时候,代码里设了FontName但显示出来还是方框,系统的字体缓存没刷。重启Matlab,或者换一个肯定有的字体,SimHei和SimSun在Windows上都有。Linux上字体少,先fc-list | grep -i sim看有没有,没有的话装一个或者改用文泉驿。LaTeX解释器用'Interpreter','latex',数学符号像\alpha、\beta这些直接写,不用Unicode字符。



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空