zoukankan      html  css  js  c++  java
  • matlab 矩阵作图 [转]

    在论文中咱们会经常看见一类图,比如说多类别文类问题,那么每一个类别分到其他类别都有一写数据,但是分到自己类别的毕竟多,这样计算百分比之后就形成了一个矩阵,如果分类正确率高的话,那么对角线上的元素的值,也就是自己到自己的那一部分,value就大。

    我最近也在做多分类问题,要画这样的图,但是发现确实很少有代码,自己画的确实不好看,还牵扯到值的显示和x轴标签的旋转问题,所以一直自己也没空仔细研究,就去stackoverflow问了一下,马上就得到了答案,stackoverflow是个好站点啊,关于计算机领域等的问答系统。很多牛人在上面。

    下面我整理了一下代码,用的答案是gnovice的,分享出来,加入函数的输入就是一个矩阵了。

    function draw_cm(mat,tick)
    
    %%
    
    %  作者: 丕子  shamoxia.com
    
    %  参数:mat-矩阵;tick-要在坐标轴上显示的label向量,例如{'label_1','label_2'...}
    
    %
    
    %%
    
    imagesc(mat);            %# 绘彩色图
    
    colormap(flipud(gray));  %# 转成灰度图,因此高value是渐黑色的,低value是渐白的
    
    num_class=size(mat,1);
    
     
    
    textStrings = num2str(mat(:),'%0.2f');
    
    textStrings = strtrim(cellstr(textStrings));
    
    [x,y] = meshgrid(1:num_class);
    
    hStrings = text(x(:),y(:),textStrings(:), 'HorizontalAlignment','center');
    
    midValue = mean(get(gca,'CLim'));
    
    textColors = repmat(mat(:) > midValue,1,3);
    
    %改变test的颜色,在黑cell里显示白色
    
    set(hStrings,{'Color'},num2cell(textColors,2));  %# Change the text colors
    
     
    
    set(gca,'xticklabel',tick,'XAxisLocation','top');
    
    rotateXLabels(gca, 45 );
    
     
    
    set(gca,'yticklabel',tick);

    里面的代码rotateXLabels(gca, 45 );是用来对x轴的label进行旋转的,防止因为太长而重叠,用的是Ben Tordoff写的,自己可以去下载这个function,这里我就不列出来了。

    举个例子吧:

    clc;
    
    clear;
    
    figure(1);
    
    mat = rand(6);
    
    draw_cm(mat,{'label_1','label_2','label_3', 'label_4', 'label_5', 'label_6'});
    
     

    出来的图:

    http://ir.sdu.edu.cn/bbs/attachments/month_1010/101016084517cf4d66dfe3dea9.jpg

    [转] http://www.zhizhihu.com/html/y2010/2267.html

    -------------

    matlab如何读入mat型的矩阵 ? 

    a=load('filename.txt');
    filename.txt 存数据的文本文件,在当前路径一般指在work文件夹下.可以用绝对路径,比如:
    a=load('d:\my\filename.txt');
    运行后a中的数据即为文件中的数据.

    你的数据文本内容格式如下:
    1,2,3,4,5
    6,7,8,9,10
    ...
    除了逗号(,)也可以使用空格( )或者制表符(TAB键)等形式,那load进来就是矩阵了

    要连续TXT就用for循环吧~

  • 相关阅读:
    左值与右值引用 详解
    MFC---导出 Excel 方法
    Linux怎么读? Linux读音考古一日游
    nginx url自动加斜杠问题
    FileBeats配置应用详解
    nginx配置选项try_files详解
    mongodb副本集集群构建
    平凡主丛上的Yang-Mills理论
    Kneser猜想与相关推广
    Lorenzini:Laplacian与图上的黎曼-罗赫定理
  • 原文地址:https://www.cnblogs.com/longdouhzt/p/2604290.html
Copyright © 2011-2022 走看看