zoukankan      html  css  js  c++  java
  • matlab等高线图

    利用三列数据,创建矩阵,以绘制等高线图。只适用于对齐的数据,否则需要插值。

    函数:

    function colplot(data,nums,p,leg)
    %data:待绘图的数据,每列一个变量
    %nums:绘图所用数据所在列1×3,依次为颜色、横坐标、纵坐标
    %p:绘制类型
    %legfun:图例
    ux=unique(data(:,nums(2)));
    uy=unique(data(:,nums(3)));
    if size(data,1)~=length(ux)*length(uy)
        warning('数据部分缺失,图像部分空白。');
    end
    [X, Y] = meshgrid(ux,uy);
    %考虑到原数据的顺序问题,这里并没有直接转换,速度稍慢
    Z = nan(size(X));
    for i=1:size(X,1)
        for j=1:size(X,2)
            try
                Z(i,j)=data(data(:,nums(2))==X(i,j) & ...
                    data(:,nums(3))==Y(i,j),nums(1));
            catch
                continue
            end
        end
    end
    if p=='c'
        contourf(X, Y, Z);
    elseif p=='p'
        pcolor(X, Y, Z);
    elseif p=='i'
        pcolor(X, Y, Z);
        shading interp;
    end
    c = colorbar;
    c.Label.String = leg;
    end
    

    测试:

    n=10;
    a=1:n;
    x=repmat(a,1,n);
    y=repelem(a,1,n);
    z=x./(y+1);
    data=[x',y',z'];
    colplot(data,[3,1,2],'i','z');
    xlabel('x');ylabel('y');
    

    colplot(data,[3,1,2],'c','z');
    xlabel('x');ylabel('y');
    

    如有部分数据缺失,将在图像上留白:

    colplot(data(1:85,:),[3,1,2],'c','z');
    xlabel('x');ylabel('y');
    

    colplot(data(1:85,:),[3,1,2],'i','z');
    xlabel('x');ylabel('y');
    

  • 相关阅读:
    API之绘图函数
    DotNetCharting
    Rule engine
    股票
    PHP
    获取Excel.dll
    Excel develop
    几个不错的开源的.net界面控件[转贴]
    关于EXCEL文件双击打不开的问题
    Regular expression
  • 原文地址:https://www.cnblogs.com/dingdangsunny/p/15656983.html
Copyright © 2011-2022 走看看