function timeaxis(xy,Zeitoffset,JahrTicks,FORM,varargin) % timeaxis(xy,Zeitoffset,JahrTicks,FORM) zeichnet Zeitachse % Eingabe: % xy : ob sich dies auf die X-Achse ('x',1) oder yachse ('y',sonst) % bezieht % Zeitoffset: der Nullpunkt der Zeitachse (julianische Tage), wenn % nicht angegeben, wird als Anfangspunkt der Zeitachse der % 1.1.-1 angenommen wie es auch datenum macht (in Beschreibung % dort faelscherweise 1.1.0 genannt) % Kann auch ein Text fuer date_transform sein, aslo z.B. % 'days since 1.1.2000' % Jahrticks: Angabe, wo die Tickmarks hinsollen, wird in Jahren % angegeben, z.B. [2000:.5:2005]. Wenn nicht angegeben werden % die aktuellen Tickmarks genommen. % Can also be one of the following strings % month, month1: set tickmarks every first of each month % month15 : set tickmarks every 15th of each month % Variants thereof: % 2months1, 3months1, 6months1: set each second,third or % sixth month % if FORM is 2 (given or by default) set it to 12=Mar00 % FORM: das Format des Zeitstrings fuer die Tickmarks, Angabe wie % bei function datestr, keine angabe bedeutet FORM=20 % Variable arguments % 'limits' : set the time axis limits to the min/max of JahrTicks % 'yearday' : assumes as date yeardays, sets Zeitoffset to % 1.1.1997 and FORM to 19 (If FORM is set to the % default 20) % Changes: % 3.3.05: Default form is now 20;dd/mm/yy if exist('xy')~=1 | isempty(xy) ; xy=1; end if ischar(xy); if length(xy)>1; error('Axis must be 1 char, x or y'); end if upper(xy)=='X'; xy=1; elseif upper(xy)=='Y'; xy=2; else error('Axis must be 1 char, x or y'); end end if exist('Zeitoffset')~=1 | isempty(Zeitoffset) ; Zeitoffset=0; elseif ischar(Zeitoffset) Zeitoffset=date_transform(0,Zeitoffset,'datenum'); else Zeitoffset=Zeitoffset-1721059; % 1.1.-1 abziehen end if nargin<4; FORM=-20; end % 'dd/mm/yy' if isempty(FORM); FORM=-20; end ii=1; setaxislimits=0; while ii<=length(varargin) if strcmpi(varargin{ii},'LIMITS') setaxislimits=1; ii=ii+1; elseif strcmpi(varargin{ii},'YEARDAY') Zeitoffset=2450450-1721059; if FORM==-20; FORM=-19; end ii=ii+1; else error('unknown variable argument') end end if exist('JahrTicks')~=1 elseif ~isempty(JahrTicks) & ischar(JahrTicks) ; switch lower(JahrTicks) case {'7day','7days'} IDD=[1 8 15 22]; IMM=1; case {'15day','15days'} IDD=[1 15]; IMM=1; case {'month','month1','months'} IDD=1; IMM=1; case {'month15'} IDD=15; IMM=1; case {'2month','2month1','2months','2months1'} IDD=1; IMM=2; case {'2month15','2months15'} IDD=15; IMM=2; case {'3month','3month1','3months','3months1'} IDD=1; IMM=3; case {'3month15','3months15'} IDD=15; IMM=3; case {'6month','6month1','6months','6months1'} IDD=1; IMM=6; case {'6month15','6months15'} IDD=15; IMM=6; otherwise error('wrong character string for Jahrticks') end if xy==1; a=get(gca,'XLim'); else a=get(gca,'YLim'); end %keyboard a=a+Zeitoffset+1721059; [idd,imm,iyyy]=dayjulian(a(1)); dumy=[]; imm=imm+1-IMM; if idd<=IDD; imm=imm-1; end if imm<1; imm=imm+12; iyyy=iyyy-1; end while 1>0 imm=imm+IMM; if imm>12; imm=imm-12; iyyy=iyyy+1; end if ~isempty(dumy) & julianday(IDD,imm,iyyy)>a(2); break; end dumy=[dumy julianday(IDD,imm,iyyy)]; end %dumy=dumy+Zeitoffset+1721059; dumy=dumy-Zeitoffset-1721059; if xy==1; set(gca,'Xtick',dumy); else set(gca,'Ytick',dumy); end switch FORM case -20; FORM=12; case -19; FORM=3; end elseif ~isempty(JahrTicks) ; if min(JahrTicks)>1721059 JahrTicks=JahrTicks-1721059; JahrTicks=JahrTicks-Zeitoffset; else if max(mod(JahrTicks,1))==0 & nargin<4; FORM=11; end JahrTicks=julianday(1,1,JahrTicks)-1721059; JahrTicks=JahrTicks-Zeitoffset; end if xy==1; set(gca,'Xtick',JahrTicks); if setaxislimits; set(gca,'Xlim',[min(JahrTicks),max(JahrTicks)]); end else set(gca,'Ytick',JahrTicks); if setaxislimits; set(gca,'Ylim',[min(JahrTicks),max(JahrTicks)]); end end end a=gca; if xy==1; xt=get(a,'XTick'); xl=datestr(xt+Zeitoffset,abs(FORM)); bereich=get(a,'Xlim'); n=sum(xt>bereich(1) & xt12 xl(2:2:end,:)=' '; end set(a,'XTickLabel',xl) set(a,'XTickLabelMode','manual') set(a,'XTickMode','manual') else yt=get(a,'YTick'); yl=datestr(yt+Zeitoffset,abs(FORM)); bereich=get(a,'Ylim'); n=sum(yt>bereich(1) & yt12 yl(2:2:end,:)=' '; end set(a,'YTickLabel',yl) set(a,'YTickLabelMode','manual') set(a,'YTickMode','manual') end