Changeset 16053


Ignore:
Timestamp:
09/03/13 08:57:35 (12 years ago)
Author:
Mathieu Morlighem
Message:

NEW: automatically disseminate data, depending on cutoff value

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/plot/plot_scatter.m

    r13963 r16053  
    11function plot_scatter(x,y,level,varargin),
     2%PLOT_SCATTER - scatter plot
     3%
     4%   Usage:
     5%      plot_scatter(x,y,level,options);
     6%
     7%   Available options:
     8%      'MarkerSize' : default is 3
     9%      'Line'       : use line instead of circles
     10%      'Cutoff'     : cut the line if the distance between 2 points is
     11%                     greater than Cutoff (default is 1000)
    212
    3 options=pairoptions(varargin{:});
     13if nargin == 4,
     14        options = varargin{1};
     15else
     16        options=pairoptions(varargin{:});
     17end
    418
    519%check input
     
    4761hold on
    4862hp=[];
    49 for i=1:numcolors
    50         pos=find(colorind==i);
    51         hprime=plot3(x(pos),y(pos),ones(size(x(pos))),...
    52                 'o','MarkerSize',getfieldvalue(options,'MarkerSize',3),'MarkerEdgeColor',palette(i,:),...
    53                 'MarkerFaceColor',palette(i,:));
    54         hp=[hp;hprime];
     63if ~exist(options,'line'),
     64        for i=1:numcolors
     65                pos=find(colorind==i);
     66                hprime=plot3(x(pos),y(pos),ones(size(x(pos))),...
     67                        'o','MarkerSize',getfieldvalue(options,'MarkerSize',3),'MarkerEdgeColor',palette(i,:),...
     68                        'MarkerFaceColor',palette(i,:));
     69                hp=[hp;hprime];
     70        end
     71else
     72        distances = sqrt( (x(1:end-1)-x(2:end)).^2 + (y(1:end-1)-y(2:end)).^2);
     73        pos=find(distances>getfieldvalue(options,'Cutoff',1000));
     74        x(pos,:)=NaN;
     75        y(pos,:)=NaN;
     76        for j=1:numcolors;
     77                pos=find(colorind==j);
     78                if(~isempty(pos) & pos(1)==1), pos(1)=[]; end
     79                if ~isempty(pos),
     80                        tempx = [x(pos-1) x(pos) NaN(size(pos))]';
     81                        tempy = [y(pos-1) y(pos) NaN(size(pos))]';
     82                        line(tempx(1:end-1),tempy(1:end-1),'color',palette(j,:),'linewidth',getfieldvalue(options,'LineWidth',2));
     83                end
     84        end
    5585end
    5686
Note: See TracChangeset for help on using the changeset viewer.