Matlab画图小指南
我发现隔一段时间不碰MATLAB,等到需要的时候来用,简直觉得寸步难行,很多命令都忘记了,因此在此小小记录一下关于在MATLAB中画图的方方面面(#^.^#)
plot(x,y,'LineWidth',1.5); %线条粗一点 %绘制散点图 sz是尺寸 scatter(x,y,sz,'MarkerEdgeColor',[0 .5 .5],... 'MarkerFaceColor',[0 .7 .7],... 'LineWidth',1.5) %标题和轴标题 坐标 title('*****','FontSize',18,'FontWeight','bold') %标题加粗 字号 xlabel('*****','FontAngle','italic'); %可以是斜体 ylabel('*****','FontAngle','italic'); axis([400,2500,0,0.6]); %控制范围 set(gca,'YTick',[0:0.1:0.6]); %x轴范围 ,间隔0.1 set(gca,'XTick',[0:500:2500]) ;%y轴范围 ,间隔500 set( gca, 'XTick', [], 'YTick', [] ); %不想要刻度线的时候 set(gca,'xticklabel',[]) %不想要刻度标签的时候 set(gca,'yticklabel',[]) set(gca,'FontName','Times New Roman','FontSize',12); %坐标轴的刻度值字体好看点 set(gca,'linewidth',1.5) ;%图的边框要好看 set(gcf,'color',[1,1,1]) %背景变白 colorbar %加色度条 colormap gray %改变色彩模式 %添加文本标注 text(0.011,0.58,'(d)2016-06-15','FontName','Times New Roman','FontSize',15) ; text(0.014,0.55,['Y=',num2str(p(1)),'X+',num2str(p(2))],'FontName','Times New Roman','FontSize',11,'FontAngle','italic') ;%num2str后才能显示 %图例 legend([p1 p2],{'Fit line','1:1 Line'},'FontName','Times New Roman','Location','southeast');%这里p1 p2分别代表两条不同的plot画出来的线 此处用到了对象 %输出图形 print('Figure1','-dpdf','-r300'); %输出pdf到当前文件夹,简单线图用pdf或eps(-deps),AI打开编辑 print('Figure2','-djpeg','-r600'); %输出jpg, 复杂、数据量大的彩图用jpg,600ppi saveas('Figure1',['D:\' Name],'pdf') %保存图形到当前目录 print('fileformat','-r+resolution','filename') print('-djpeg','-r600','bon') print('-djpeg','-r900','ALA&FVC')
name:value 参数设置:
DatetimeTickFormat 的值 | 示例 |
---|---|
'yyyy-MM-dd' |
2014-04-19 |
'dd/MM/yyyy' |
19/04/2014 |
'dd.MM.yyyy' |
19.04.2014 |
'yyyy年 MM月 dd日' |
2014年 04月 19日 |
'MMMM d, yyyy' |
April 19, 2014 |
'eeee, MMMM d, yyyy HH:mm:ss' |
Saturday, April 19, 2014 21:41:06 |
'MMMM d, yyyy HH:mm:ss Z' |
April 19, 2014 21:41:06 -0400 |
DurationTickFormat 的值 | 说明 |
---|---|
'y' |
精确定长年的数目。固定长度的一年等于 365.2425 天。 |
'd' |
精确定长天的数目。固定长度的一天等于 24 小时。 |
'h' |
小时数 |
'm' |
分钟数 |
's' |
秒数 |
#加上线性拟合 hold on p = polyfit(x,y,1);%线性拟合 m=0:0.01:0.6; x1=linspace(min(x),max(x)); y1=polyval(p,x1); p1=plot(x1,y1,'-k','linewidth',1.2);
面向对象式画图
所谓面向对象式的绘图,是仿照生活实际而来的,有别于过程式的绘图方式。
- 创建figure对象。摊开空白画布
- 创建axes对象。画布上选一个绘制区域
- 创建line对象。在绘图区画图·
- 创建legend对象。
- 保存图像
各种对象都有不同的属性,绘制精致的图形本质上是学会设置各种属性
Tips:
- 请提前设置好绘图的大小(基于你论文排版需要),所有字体样式。
- 输出pdf/eps/jpg,用上述的print输出,然后用AI打开文件编辑修改,用AI导出为/存储为...
- 将visio/word文档转换为pdf,请使用 Acrobat PDFMaker,不推荐用其自带的另存为或打印为pdf(存在很多细节问题)
f = figure; P1 = plot(x, y, '-', 'lineWidth', 1.2, 'color', [0.8 0.3 0.5]);%创建图形对象P1 hold on; P2 = plot(x, y2, '-', 'lineWidth', 1.2, 'color', [0.1 0.3 0.5]);%创建图形对象P2 axis([xmin xmax ymin ymax]) % x y轴范围 1pt = 1/72inch 1 inch = 25.4mm xlabel('Torque $M_x$ (Nm)','interpreter','latex','FontSize',8); % Latex格式的label ylabel('******','Fontname', 'Times New Roman','FontSize',8); width = 240; % 240pt US letter 双栏 set(gcf,'unit','points','PaperUnits','points','PaperPosition',[0,0,240,240/5*4],... 'position',[500 300 240 240/5*4],'color','w','PaperSize',[width, width/5*4]); set(gca, 'Fontname', 'Times New Roman', 'Fontsize', 8); % 坐标轴句柄,设置坐标轴刻度数字样式 L1 = legend([P1 P2],'Actual torque','Fake');%创建图例对象 设置图例中的名字 set(L1,'Location','northeast','Orientation','vertical',... 'Fontname', 'Times New Roman','FontSize',8,'TextColor','black');% legend 格式 %输出图形到文件 print('Figure1','-dpdf','-r300'); %输出pdf,简单线图用pdf或eps(-deps),AI打开编辑 print('Figure2','-djpeg','-r600'); %输出jpg, 复杂、数据量大的彩图用jpg,600ppi %———————————————————————————————————————— % 创建figure对象 Fig = figure(... 'Units', 'pixels',... 'Name', 'move2',... 'NumberTitle', 'off',... 'IntegerHandle', 'off'); % 创建axes对象, 设定坐标轴属性 AxesH = axes(... 'Parent', Fig,... 'Xlim', [-10 50],... 'Ylim', [-10 40],... 'XGrid', 'on',... 'YGrid', 'on',... 'DataAspectRatio', [1 1 1],... 'Visible', 'on'); t = linspace(0,45,101)*pi/180; x = 40*cos(t); y = 40*sin(t); realtrace = line(AxesH, x, y,'linewidth',2); precisetrace = line(AxesH,[x(1) x(end)] ,[y(1) y(end)],... 'color','g',... 'linewidth',2,... 'linestyle','--'); legend(AxesH,[realtrace,precisetrace],... '真实运动轨迹','精确运动轨迹',... 'location','northwest'); % 指定保存路径和格式 saveas(Fig,['D:\abc\' Fig.Name],'pdf')
%更改坐标轴范围,对于自动计算的最小值或最小值范围,分别使用 -inf 或 inf 来表示。 xlim([0 inf]) ylim([-0.4 0.8]) %反转坐标轴方向:通过设置 Axes 对象的 XDir 和 YDir 属性,使用 gca 命令可访问 Axes 对象。 ax = gca; ax.XDir = 'reverse'; ax.YDir = 'reverse'; box off %删除坐标区图框轮廓
参考:
https://www.zhihu.com/question/269326720/answer/347245807
https://www.zhihu.com/question/269326720/answer/347554215