focalization:annotation in matlab Graph

来源:百度文库 编辑:偶看新闻 时间:2024/04/27 22:20:47
annotation in matlab Graph

matlab 中annotation的操作可以象windows的“画图”一样很方便的对图像进行标注,但如果所绘的图需要修改,其标注也需要再手工重复操作一次,所以在这种情况下用脚本进行annotation标注就省时省力了。annotation是基于figure坐标的,而标注往往是基于axes坐标的,简单的说前者是框后者是框中的画,matlab好像没有将axes坐标与annotation直接联系起来,所以将axes坐标转变为figure坐标是annotation标注的核心。

1. plot 函数所绘图形的annotation标注

      用plot绘制图形后,再用annotation('textarrow',xf,yf)等标注,其中xf和yf是由参考[1]中的dsxy2figxy( )函数从axes坐标转换得到的,图1给出了一个例子,分别对图1中axes坐标的(0.7, 48)、(0.8, 48)和(1.5,38)进行标注。

图1 在plot绘图中的标注

 

2.polar 函数所绘图形的annotation标注

       用polar绘制图形后如果还用[1]中dsxy2figxy( )函数进行转换则一般得不到正确的figure坐标。这里提供一个初略的方法。先用polar绘图,然后设置figure为正方形,如set(gcf,'position',[100,100,600,600]),正方形使figure的normalized坐标与polar绘的圆在x和y轴的比例保持一致,用axis(gca),get(gca,'units')和get(gca,'position')得到axes坐标范围、单位及其在figure坐标中的位置等信息,这些信息只作参考, 接着可以通过axis([-2.85,2.85,-2.85,2.85])设置坐标范围,用set(gca,'Position',[0.1,0.1,0.8,0.8])设置其位置,之后就可以进行坐标转换了,这里通过一个简单的转换函数pxy2fxy( )实现,代码如图3所示。图2给出了polar绘图用以上方法进行的标注。

图2 polar绘图中的标注

图3  转换代码

[1]matlab help->MATLAB->Graphics->Annotating Graphs->Positioning Annotations in Data Space

本文引用地址: http://www.sciencenet.cn/m/user_content.aspx?id=47815