How do you add a block of text to a plot?
The attributes of a block of text is described by two secondary objects, the "text-table" and "text-orientation" objects. The text-table object controls things like the font and color while the text-orientation object controls things like horizontal and vertical alignment and text height. You can mix-and-match these secondary objects to obtain the precise type of text you want.
You can create a single secondary "text-combined" object which has text-table and text-orientation objects as component objects. Let's start off with the following example line plot:
created by the following code:
import Numeric as N
x = N.arange(17)*N.pi/8.
y = N.sin(x)
v = vcs.init()
my_gm = v.createxvsy('myGraphicsMethod','default')
my_gm.marker = 4
my_tpl = v.createtemplate('myTemplate', 'default')
my_tpl.mean.priority = 0
my_tpl.max.priority = 0
my_tpl.min.priority = 0
v.plot(x, y, my_gm, my_tpl, name=' ')
Note I've created my own
for use in this plot. Also note that I set keyword
to whitespace, so that the default plot title is not printed.
Let's add a block of text on top for the title. To do so, we
first create a text-combined object
texttitle = v.createtext('title_ttab', 'default', 'title_tori', 'defcenter')
texttitle is made up of the text-table object with name
'title_ttab' and text-orientation object with name
'title_tori'. The text-table object is a copy of
the default object, while the text-orientation object is a copy
of the default-centered object (since we'll want the title to be
v.createtext is an alias for
Next we set the title height, the "x" (horizontal) and "y" (vertical) coordinate positions, and the content of the text block.
texttitle.height = 40
texttitle.x = [0.5]
texttitle.y = [0.9]
texttitle.string = ['Nice Sine Curve']
For some reason the
doesn't seem to list
string as an attribute of a
text-combined object. That's unfortunate, since the content of
the text block is set in
We place the text on the plot using the
You can specify more than one piece of text in the text-combined block by adding the additional text (and plot coordinates for that text) as additional elements of the list. This is one way of getting multiple lines of text. Thus:
texttitle.x = [0.5, 0.5]
texttitle.y = [0.95, 0.9]
texttitle.string = ['Nice Sine Curve', 'By Johnny']
gives us a two-line title with the first line "Nice Sine Curve" and the second line "By Johnny". Both lines are centered above the plot.
Notes: This discussion applies to CDAT 3.3.