[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: xyouts character size to scale with the size of the plot window



Kristian Kjaer (kristian.kjaer@risoe.dk) writes:

> I hope this is not a too FAQ:
> 
> IDL> !p.multi=0
> IDL> plot,indgen(10)
> IDL> xyouts,7,3,'A string',/data,charsize=.7  ; Gives text reasonably
> sized for my purpose
> IDL> !p.multi=[0,3,7]
> IDL> plot,indgen(10)
> IDL> xyouts,7,3,'A string',/data,charsize=.7  ; Gives text which is too
> large for the window.
> 
> How to get the xyouts character size to scale with the size of the plot
> window?

I've always had pretty could luck using my Str_Size program,
which I wrote to size the annotation of plots in resizeable
graphics windows. Your application is different from what I had
in mind, although I think Str_Size can be adapted for it. I'm
not sure there is any reliable way to *always* get correctly
sized characters. Too much depends on such other factors, such as
the size of the window, personal aesthetics, etc.

Str_Size works by specifying a string and a "target width"
of that string in the display window. The target width is
given in normalized coordinates. I thought dividing the
target width by the number of columns in the multi-plot
worked reasonably well:

*******************************************************************
PRO EXAMPLE
window, xsize=500, ysize=500
!p.multi=0
plot,indgen(10)

   ; Normal target size.
   
largeCharsize = Str_Size('A String', 0.15)
xyouts,7,3,'A string',/data,charsize=largeCharsize  
!p.multi=[0,3,7]
window, 1, xsize=500, ysize=500

   ; Target size divided by number of columns.
   
smallCharsize= Str_Size('A String', 0.15/!p.multi[1]) 
for j=0,20 do begin
   plot,indgen(10)
   xyouts,7,3,'A string',/data,charsize=smallCharsize 
endfor
!P.multi=0
END
*******************************************************************

You can find Str_Size here:

   http://www.dfanning.com/programs/str_size.pro

Cheers,

David




-- 
David Fanning, Ph.D.
Fanning Software Consulting
Phone: 970-221-0438 E-Mail: davidf@dfanning.com
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Toll-Free IDL Book Orders: 1-888-461-0155