本文摘要(由AI生成):
文章主要介绍了在MATLAB中绘制特殊图形的技巧,包括坐标轴叠加、坐标轴原点设置、坐标轴方向设置、坐标轴标注反转等。同时,文章还介绍了箭头绘制、线条/文本公式化标记、自动点标记等技巧。这些技巧在实际绘图中具有较强的实用性。
前几天听了平台讲师算法工匠的 Matlab线上训练营直播课,老师在讲关于绘图的方面的知识,老师的讲课方式对于基础小白还是很友好的,过冷水在日常工作中也经常用Matlab绘图,有时候会绘制这样的图
绘制这样的图还是有点难度的,有时候我们需要多掌握一点绘图方面的技巧,以满足日常实际需求。过冷水就和大家讲讲这样的图应该怎么画。
这幅图是过冷水本科期间老师让画的一幅图,具体含义就不给大家讲了。这幅图的不同之处在于:
一、四个方向都有坐标,这在平常绘图中是很少见的。
二、上下坐标、左右坐标的坐标轴方向都是相反的,大小变化形式不同。
解决问题一的诀窍在于坐标轴的叠加,这幅图可以理解为三个坐标轴叠加调整得到。
坐标轴叠加的命令;
hl=gca;%获得当前轴的句柄 h2=axes('position',get(hl,'position'));
问题二我们需要解决的是如何把三个原点为左下方的坐标轴修改成如图所示的四方都有坐标轴的形式。
可用以下几个命令实现
axis('ij',[])%坐标轴原点设为左上方; set(axis,'yaxislocation','right/left');%将Y坐标轴设置在右边/左边; set(axis,'xaxislocation','botttom');%将x坐标轴设置在右边/左边; set(axis,'x(y)dir','reverse');%将x/y坐标标注反转.
上图涉及到了核心绘图命令已经讲解完毕,完整绘图代码见文末,
有时候绘图的时候图像要求我们做特殊标记,基本上常见的教科书都会把命令摆出出来,对于初学者很抽象不知道具体该怎么用,这个时候你需要一段代码来实现你想要实现的要求。比如说:
这幅图也是过冷水在学习过程中遇到的一幅图,MATLAB入门教程中是不会讲图示中的箭头绘制、交点标记、线条数学公式化标记的,恰好这些都有较强的实用行,就和大家分享一下。
一、箭头绘制我们可以使用命令
annotation(figure,'arrow',[x_begin,x_end],[y_begin,y_end]);
二、线条/文本公式化标记的命令为
text('FontSize',16,'FontName','Times New Roman','Interpreter','latex','String','$$y_1=100(\frac{x}{200})^3\int_{0}^{\frac{200}{x}}\frac{t^4e^t}{(e^t-1)^2}dt$$'); legend(axes1,'$y_1=100(\frac{x}{200})^3\int_{0}^{\frac{200}{x}}\frac{t^4e^t}{(e^t-1)^2}dt$'); set(legend,'Interpreter','latex');
以上两个命令字符串书写部分有微小的差别,读者自行观察。图例需要通过设置才能显示特殊形式,而文本则不需要,这一点需要注意。
在matlab中要表现较为复杂的符号或者公式需要用特有格式,常见的格式有如下:
三、给大家讲有特色的自动点标记的技巧,在实际绘图我们经常更直观的展示特殊点的信息需要标记,MATLAB中是没有自动标记点的命令可以调用的,命令需自编。
[m_one,n_one]=find(abs(y1-y2)==min(abs(y1-y2)));%特殊点的坐标识别,本文取交点的坐标; m=T(m_one,n_one);n=y1(m_one,n_one);%读取交点对应的X,Y数值 str = ['min(' num2str(m) ',' num2str(n) ')'];%对数值进行符号化; text(m,n,str);%文本标记
过冷水想和大家分享的绘图小技巧就这么多,若是觉得过冷水和大家分享的知识有用,请多多推广。
内容简介:完整绘图案例代码