MATLAB画图常用调整代码

转载自:http://blog.chinaunix.net/uid-11829250-id-3472528.html

  1. %单y轴
  2. plot(t*1e+9,abs(iGG)/max(abs(iGG)),'k','linewidth',2);
  3. axis([-5,5,0,1])
  4. xlabel('时间/ns');
  5. ylabel('幅度/a.u.');
  6. set(get(gca,'title'),'FontSize',10,'FontName','宋体');%设置标题字体大小,字型
  7. set(get(gca,'XLabel'),'FontSize',10,'FontName','Times New Roman');%设置X坐标标题字体大小,字型
  8. set(get(gca,'YLabel'),'FontSize',10,'FontName','Times New Roman');%设置Y坐标标题字体大小,字型
  9. set(gca,'FontName','Times New Roman','FontSize',10)%设置坐标轴字体大小,字型
  10. text(0.3,1.2,'(a)','FontSize',10,'FontName','Times New Roman'); %设置文本字型字号
  11. set(gca, 'XTick', [0 10 20 30 40 50 60 70 80 90]) %设置X坐标轴刻度数据点位置
  12. set(gca,'XTickLabel',{'0','10','20','30','40','50','60','70','80','90'}) %设置X坐标轴刻度处显示的字符
  13. set(gca, 'YTick', [-15 -10 -5 0 5 10 15]) %设置X坐标轴刻度数据点位置
  14. set(gca,'YTickLabel',{'-15','-10','-5','0','5','10','15'}) %设置Y坐标轴刻度处显示的字符
  15. axis([0,90,-20,20])
  16. set(gca,'YTickLabel',[]); %只显示y坐标轴刻度,不显示y坐标轴的值;
  17. set(gca,'XTickLabel',[]); %只显示x坐标轴刻度,不显示x坐标轴的值;
  18. set(gca,'ytick',[]); %y轴的坐标值和刻度均不显示;
  19. set(gca,'xtick',[]); %x轴的坐标值和刻度均不显示;

  20. figure;
  21. set (gcf,'Position',[400,300,600,200]); %设定plot输出图片的尺寸。参数含义为:xmin,ymin,width,height
  22. %plot的默认参数为[232,246,560,420],Position的单位可以用units属性制定,units属性的值可以是下列字符串中的任何一
  23. %种:pixel(像素,缺省值)、normalized(相对单位)、inches(英寸)、centimeters(厘米)、points(磅)。
  24. %指定大小后,在figure中用text输出的文字大小,设置的是多大,在WORD中显示的就是多大。
  25. set (gcf,'units','centimeters','Position',[4,3,6,2]); %指定fiugre的尺寸为6cm宽,2cm高。
  26. %也可以直接用下属语句:
  27. fiure('units','centimeters','Position',[4,3,6,2]);

  28. %改变ylabel离坐标轴的距离
  29. hc=findobj(allchild(gcf), 'Type', 'axes');
  30. hc2=findobj(allchild(hc), 'Type', 'text');
  31. set(hc2(3), 'Position', [0 0 0]);
  32. %改变xlabel离坐标轴的距离
  33. hc=findobj(allchild(gcf), 'Type', 'axes');
  34. hc2=findobj(allchild(hc), 'Type', 'text');
  35. set(hc2(4), 'Position', [0 0 0]);

  36. %双y轴坐标图形调整
  37. [AX,H1,H2]=plotyy(f*1e-12,abs(T1.*T1),f*1e-12,angle(T1.*T1));
  38. set(AX,'FontSize',14,'FontName','Times New Roman')%设置x轴、左y轴、右y轴刻度字号和字型
  39. set(AX(1),'Xcolor','k','Ycolor','k')%设置x轴、左y轴刻度字体为黑色;
  40. set(AX(2),'Xcolor','k','Ycolor','k')%设置x轴、右y轴刻度字体为黑色;
  41. set(AX,'Xlim',[207.5 217.1],'xtick',[208:1:217])%设置x轴数据范围(207.5到217.1),刻度显示(208,209,210...217)
  42. set(AX(1),'ylim',[0,0.5],'ytick',[0:0.1:0.5])%设置左y轴数据范围(0到0.5),刻度显示(0,0.1,0.2...0.5)
  43. set(AX(2),'ylim',[0,3],'ytick',[0:1:3])%设置右y轴数据范围(0到3),刻度显示(0,1,2,3)
  44. set(H1,'Linestyle','-','color','r','Linewidth',2.5);%设置第一条曲线的线型、颜色、粗细
  45. line(x,y,'linestyle','-','color','r','Linewidth',2.5,'parent',AX(1));%在第一条曲线上再画一条曲线。
  46. set(H2,'Linestyle','-.','color','b','Linewidth',2.5);%设置第二条曲线的线型、颜色、粗细
  47. set(get(AX(1),'Ylabel'),'string','Amplitude(a.u.)','FontSize',10,'FontName','Times New Roman','Position',[0 0 0 ]);%设置左y轴标题字号字型
  48. set(get(AX(2),'Ylabel'),'string','Phase(rad)','FontSize',10,'FontName','Times New Roman');%设置右y轴标题字号字型
  49. set(get(AX(1),'Xlabel'),'string','Optical frequency(THz)','FontSize',10,'FontName','Times New Roman');%设置x坐标标题字体大小,字型


  50. figure
  51. x = 0:0.01:20;
  52. y1 = 200*exp(-0.05*x).*sin(x);
  53. y2 = 0.8*exp(-0.5*x).*sin(10*x);
  54. AX = plotyy(x,y1,x,y2,'plot');
  55. line(x,.5*y1,'linestyle','--','parent',AX(1)) %在第一条曲线上画曲线。

  56. %求极大值的位置:
  57. find(diff(sign(diff(data)))==-2)+1;
  58. %求极小值的位置
  59. find(diff(sign(diff(data)))==2)+1;

  60. %画椭圆
  61. sita=0:pi/20:2*pi;
  62. x0=0;
  63. y0=0;
  64. a=2;
  65. b=4;
  66. fi=0;
  67. plot(x0+a*cos(sita+fi),y0+b*sin(sita+fi),'linewidth',1.5);%fi为方位角,x0,y0为中心点坐标,a/b为长短轴;

  68. %画箭头
  69. annotation('arrow',[0.535 0.62],[0.72 0.72],'LineStyle','-','Linewidth',1.5,'color',[0 0 1])%,'HeadStyle','cback3');
  70. %箭头起始点(0.535,0.72),箭头结束点(0.62,0.72),坐标值为figure的归一化坐标。

<think>好的,用户现在问的是如何在MATLAB作图中调整x轴范围。之前他们遇到了关于synchronize函数的参数错误,现在转到了绘图方面的调整。这可能意味着他们现在在处理数据可视化的问题,可能需要将处理好的时间表数据用图表展示出来,并调整x轴范围以便更清晰地呈现数据。 首先,我需要回忆MATLAB调整坐标轴范围的常用方法。最直接的是xlim函数,不过也可能有其他方法,比如在plot函数中设置,或者在图形属性中直接修改。需要确保覆盖多种方法,因为用户可能有不同的使用习惯或需求。 接下来,用户可能的场景是什么样的?比如他们可能生成了一个时间序列图,但默认的x轴范围不合适,需要手动调整。或者他们可能在一个子图中绘制多个图表,需要统一x轴范围以便比较。也有可能他们处理的是实时数据,动态调整x轴范围来显示最新的数据点。 用户可能是MATLAB的初学者,不太熟悉图形句柄或高级属性设置,所以需要给出简单直接的方法,比如使用xlim,同时也要提到其他方法,比如在plot时指定XData,或者使用set函数,以及图形属性检查器这种GUI方式。这样不同水平的用户都能找到适合自己的解决方案。 另外,用户可能不仅想调整x轴的范围,还可能对如何设置不等距范围或动态调整感兴趣,所以需要补充这些内容。比如用xlim([xmin, xmax])是最基本的,但如果有特殊需求,比如非线性轴,可能需要用XTick和XTickLabel属性。动态调整的话,可能需要结合回调函数,但考虑到用户可能还不熟悉,可以简单提及,避免复杂化。 需要检查是否有其他相关函数或属性,比如axis函数,可以同时设置x和y轴的范围,这也是一个常用的方法,应该包括在回答中。同时,示例代码要简洁明了,让用户可以直接复制粘贴并修改参数,比如使用plot之后紧跟着xlim,或者用gca获取当前坐标轴对象再设置属性。 还要注意用户之前的问题是关于时间表的,可能x轴是时间数据,这时候调整范围可能需要用datetime类型的数据,比如在示例中使用datetime向量。不过用户的问题没有明确说明,所以可能需要给出一般数值轴和时间轴的两种情况,或者提醒用户如果x轴是时间数据,应该用datetime来设置范围。 总结回答的结构应该是先列出多种方法,每种方法给出示例代码和说明,然后可能的使用场景或注意事项。这样用户可以根据自己的具体情况选择合适的方法。同时,需要注意使用中文,术语准确,比如“句柄”、“属性”等词汇需要正确翻译,并保持示例代码的正确性,避免语法错误。</think>在MATLAB调整图形的x轴范围是数据可视化的常见需求,可通过多种方法实现。以下是详细的步骤和示例: --- ### **方法1:使用 `xlim` 函数(最简单直接)** **功能**:直接设置x轴的显示范围。 **语法**: ```matlab xlim([xmin, xmax]) % 设置x轴范围为 [xmin, xmax] xlim('auto') % 恢复为自动调整范围 ``` **示例**: ```matlab x = 0:0.1:10; y = sin(x); plot(x, y); xlim([2, 8]); % 仅显示x从2到8的部分 ``` --- ### **方法2:在 `plot` 函数中指定范围** **适用场景**:绘制时直接截取部分数据。 **示例**: ```matlab % 生成数据 x = 0:0.1:10; y = sin(x); % 截取x在[3,7]范围内的数据并绘图 mask = (x >= 3) & (x <= 7); plot(x(mask), y(mask)); ``` --- ### **方法3:通过坐标轴属性设置** **适用场景**:需要更精细控制图形属性时(如同时调整其他参数)。 **步骤**: 1. 获取当前坐标轴句柄:`ax = gca;` 2. 修改 `ax.XLim` 属性。 **示例**: ```matlab plot(x, y); ax = gca; ax.XLim = [1, 9]; % 设置x轴范围 ax.XTick = 1:2:9; % 自定义刻度位置(可选) ax.XLabel.String = '时间'; % 设置x轴标签(可选) ``` --- ### **方法4:使用 `axis` 函数** **功能**:一次性设置x和y轴范围。 **语法**: ```matlab axis([xmin, xmax, ymin, ymax]) % 设置x和y轴范围 axis tight % 自动收紧坐标轴范围 ``` **示例**: ```matlab plot(x, y); axis([2, 8, -1, 1]); % x轴显示[2,8],y轴显示[-1,1] ``` --- ### **方法5:动态调整(交互式)** **适用场景**:需要手动调整范围时。 **步骤**: 1. 绘图后,点击图形窗口工具栏的 **坐标轴编辑工具**(图标为箭头+坐标轴)。 2. 在图形属性检查器中修改 `XLim` 值。 --- ### **特殊情况:时间序列图** 如果x轴为时间数据(`datetime` 类型),需确保范围值也是时间格式: ```matlab % 生成时间序列数据 time = datetime(2023,1,1) + hours(0:24); y = rand(25,1); % 绘图并设置x轴范围 plot(time, y); xlim([datetime(2023,1,1,6,0,0), datetime(2023,1,1,18,0,0)]); ``` --- ### **总结表格** | 方法 | 适用场景 | 代码示例 | |------------------|-------------------------------|-----------------------------------| | `xlim` 函数 | 快速设置范围 | `xlim([2, 8])` | | 截取数据再绘图 | 仅显示部分数据 | `plot(x(mask), y(mask))` | | 修改坐标轴属性 | 需要同时调整其他图形属性 | `ax.XLim = [1, 9];` | | `axis` 函数 | 同时设置x和y轴范围 | `axis([2, 8, -1, 1])` | | 图形界面工具 | 手动交互式调整 | 点击工具栏编辑坐标轴 | 通过上述方法,可以灵活控制MATLAB图形的x轴显示范围。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值