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

https://ww2.mathworks.cn/help/matlab/ref/plot.html

posted @ 2020-03-31 16:47  icydengyw  阅读(856)  评论(0编辑  收藏  举报