xingheliang 发表于 2011-2-12 14:40:42

如何用MATLAB绘制雷达图(戴布拉图、螂蛛网图、玫瑰图)原创

本帖最后由 xingheliang 于 2011-2-23 10:12 编辑

昨天,一朋友托我用matlab编写一个雷达图显示程序,当时心想:这类问题一定已有先人写过,自己copy修改即可交差,应该没什么难的。结果就轻松答应下来。没想到,这就是噩梦的开始。
       我足足花了半天的时间查书上网找资料,结果一无所获。雷达图的绘制多用excel等工具,通过matlab来绘制的先例极少(也许是我没有找到)。无奈,只有自己动手了。
         先来看看介绍;
      “ 雷达图(又可称为戴布拉图、螂蛛网图)是财务分析固表的一种。即将一个公司的各项财务分析所得的数字或比率,就其比较重要的项目集中划在一个圆形的固表上,来表现一个公司各项财务比率的情况,使用者能一目了然的了解公司各项财务指标的变动情形及其好坏趋向。
                      http://home.simwe.com/attachment/201102/23/461990_12984269425zkv.jpg                               ——选自《百度百科》”
    以下是我接到的示例
                  http://home.simwe.com/attachment/201102/23/461990_12984269518dQr.jpg
         我首先想到的是借助极坐标形式来绘制上图。
一, 主程序命名为:radar_lee.m.
      为了绘制出两条折线,编程如下:
      x=;
      y=;
      z=;
      polar(x,y,'b'),title('雷达图示例-星星原创')
      hold on   %两折线重叠显示
      polar(x,z,'m')
二,    折线成功显示,但是问题也进一步显现:MATLAB默认的极坐标的显示格式是每隔30度显示一条径向线,并进行角度标注。如果不能自定义径向线的角度和名称标注,将不能借此表达雷达图的 多元参数信息。
    为此,我修改了matlab的系统函数polar(极坐标绘制函数)。
    在matlab命令窗口键入:
    >> edit polar.m
    这样就进入了polar函数。
   找到:
   % plot spokes                        绘制径向线
    th = (1:6)*2*pi/12;               
    cst = cos(th); snt = sin(th);
    cs = [-cst; cst];
    sn = [-snt; snt];
    line(rmax*cs,rmax*sn,'linestyle',ls,'color',tc,'linewidth',1,...
         'handlevisibility','off','parent',cax)

    程序中   th表示两条径向线以30度为间隔,只要对其进行修改即可自定义分配径向线的个数与夹角。
    比如我的修改是 th = (1:8)*2*pi/16;       %圆上分布16条径向射线,间隔为22.5度。
    然后,要对程序中随后出现的夹角参数进行相应修改(30改为22.5)。
三, 径向线标注的修改
    我们不光需要修改径向线的个数与夹角,还要修改其标注。将角度标注修改为雷达图中的评价标准(比如:油耗,动力,。。。)。
    修改仍需要在polar.m中进行。
    % annotate spokes in degrees
    rt = 1.1*rmax;
    for i = 1:length(th)
      text(rt*cst(i),rt*snt(i),int2str(i*22.5),...    %int2str(i*22.5)是关键
             'horizontalalignment','center',...
             'handlevisibility','off','parent',cax);   
   自行定义字符向量对其进行替换即可。
四, 线的加宽
      主程序编写之后,还需对细节进行修饰。比如:标题位置,标注大小,线的宽细。。。。。
   线宽修改示例:
   set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);

五,示例
    分别编译保存polar与主程序。
    运行主程序radar,绘图如下
http://home.simwe.com/attachment/201102/23/461990_1298426954FYmY.jpg   


就是这样,搞定了。费了一天一夜,值。
原创作品,欢迎交流,转载请注明
598899484@qq.com

ZanDZ 发表于 2011-2-12 16:22:15

很有用的文章,谢谢分享

liuyalong008 发表于 2011-2-12 20:45:04

图片为嘛看不见!!!

xingheliang 发表于 2011-2-23 10:13:25

3# liuyalong008

修复了一下,这下可以看到图了

xingheliang 发表于 2011-9-9 21:12:24

liuyalong008 发表于 2011-2-12 20:45 static/image/common/back.gif
图片为嘛看不见!!!

不好意思,由于我的图片是从校内转过来的,所以还是看不到

desue0 发表于 2011-9-10 10:06:50

谢谢分享,试一下。。
页: [1]
查看完整版本: 如何用MATLAB绘制雷达图(戴布拉图、螂蛛网图、玫瑰图)原创