summersubdue的个人博客分享 http://blog.sciencenet.cn/u/summersubdue

博文

annotation in matlab Graph

已有 20115 次阅读 2008-11-21 23:13 |个人分类:日记

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



https://blog.sciencenet.cn/blog-43412-47815.html

上一篇:simple circular antenna array
下一篇:linewidth of matlab exported file
收藏 IP: .*| 热度|

0

发表评论 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-3-29 17:36

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部