raphael schefold wrote:
> After overplotting data on !P.MULTI Plots it is sometimes necessary to
> plot the axis, titles etc again to have the axis (which is mostly
> black) drawn over your data lines (which are often colored).
> But plot, data, /noerase, /nodata jumps to the next plot window. For
> that,
> !p.multi(0)=!p.multi(0)+1 helps, as you can see in the following code.
>
> I am posting, because I met several people who were confused about
> that.
>
> -Raphael
Dear Raphael
it's better to use first the plot routine with /nodata.
Because then the coordination system is defined.
And the axis are drawn whithout the data.
At this point you can now use additional routines like polyfill to
mark regions of the plotarea. Then all following plots have to be done
by oplot. So they are automaticly in the forground of areas.
At least in some cases it could be necessary to draw at the end the axis
again. I do this by the axis command.
One of the cases is the oplot could overplot the tickmarks.
We have developed over several years a library to get mostly very good
outputs on screen, postscript and animations.
If you are interested you should have a look at our library
http://www.fz-juelich.de/icg/icg-i/idl_icglib/idl_lib_intro. html
escpecially at the examples
http://www.fz-juelich.de/icg/icg-i/idl_icglib/idl_source/idl _html/idl_work_idl_work.examples.category.htm#2
And here is a short example of source:
An actual version of plotprepare you can find here:
wget
http://www.fz-juelich.de/icg/icg-i/idl_icglib/idl_source/idl _bin/plotprepare.sav
This routine sav file is builded from all dependencies of the plot library.
pro plot_20030711
x=findgen(10) & y=sin(x)
plotprepare,plot,dim=1
plot.rows=2 & plot.columns=2
;plot.psflag=1
plot.page_title='TEST for IDL-PVWAVE'
; xp_layout,plot
plotinit,plot
plot.psym=0
plot.xtitle='X' &plot.ytitle='Y'
plot.yrange=[0,1]
set_frame,plot,x=x,y=y,type='XY'
yv=plot.yrange & xv=[0.2,1.5]
POLYFILL,[xv[0],xv[1],xv[1],xv[0]],[yv[0],yv[0],yv[1],yv[1]] ,$
/data,color=plot.color_nc.orange ,/fill
plot.color=plot.color_nc.medium_grey
plotxy,plot,x=x,y=y
plot.new=1 & plot.color=plot.color_nc.red
plotxy,plot,x=x,y=y
plot.new=1 & plot.color=plot.color_nc.blue
plotxy,plot,x=x,y=y
plot.new=1 & plot.color=plot.color_nc.green
plotxy,plot,x=x,y=y
plotend,plot
end
The result of this looks similiar to this
http://www.fz-juelich.de/icg/icg-i/idl_icglib/idl_source/idl _bin/20030711/plot_20030711.png
best
regards
Reimar
--
Reimar Bauer
Institut fuer Stratosphaerische Chemie (ICG-I)
Forschungszentrum Juelich
email: R.Bauer@fz-juelich.de
------------------------------------------------------------ -------
a IDL library at ForschungsZentrum Juelich
http://www.fz-juelich.de/icg/icg-i/idl_icglib/idl_lib_intro. html
============================================================ =======
>
> Example code for "nodata noerase plot after overplotting Data on
> !P.MULTI Plots":
>
> !P.MULTI= [0, 2, 2]
>
> p_sav=replicate(!p, 4)
> x_sav=replicate(!x, 4)
> y_sav=replicate(!y, 4)
>
> for i=0, 3 do begin
> plot, [0,1], [0, 1], title=string(i), /nodata
> p_sav(i)=!p & x_sav(i)=!x & y_sav(i)=!y
> end
>
> for i=0, 3 do begin
> !p=p_sav(i) & !x=x_sav(i) & !y=y_sav(i)
> oplot, [.5], [.5], psym=i
> end
>
> for i=0, 3 do begin
> !p=p_sav(i) & !x=x_sav(i) & !y=y_sav(i)
> !p.multi(0)=!p.multi(0)+1
> plot, [0,1], [0, 1], title=string(i), /nodata, /noerase
> end
|