Index: /issm/trunk-jpl/src/m/plot/applyoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/plot/applyoptions.py	(revision 17855)
+++ /issm/trunk-jpl/src/m/plot/applyoptions.py	(revision 17856)
@@ -227,5 +227,9 @@
 			cb.add_lines(locs,['k' for i in range(len(locs))],npy.ones_like(locs))
 		if options.exist('colorbartitle'):
-			cb.set_label(options.getfieldvalue('colorbartitle'),fontsize=fontsize)
+			if options.exist('colorbartitlepad'):
+				cb.set_label(options.getfieldvalue('colorbartitle'),\
+						labelpad=options.getfieldvalue('colorbartitlepad'),fontsize=fontsize)
+			else:
+				cb.set_label(options.getfieldvalue('colorbartitle'),fontsize=fontsize)
 		cb.ax.tick_params(labelsize=fontsize)
 	#}}}
@@ -235,5 +239,16 @@
 	#expdisp
 
-	#text
+	#text {{{
+	if options.exist('text'):
+		text=options.getfieldvalue('text')
+		textx=options.getfieldvalue('textx')
+		texty=options.getfieldvalue('texty')
+		textsize=options.getfieldvalue('textsize')
+		textcolor=options.getfieldvalue('textcolor')
+		textweight=options.getfieldvalue('textweight')
+		textrotation=options.getfieldvalue('textrotation')
+		for label,x,y,size,color,weight,rotation in zip(text,textx,texty,textsize,textcolor,textweight,textrotation):
+			ax.text(x,y,label,transform=ax.transAxes,fontsize=size,color=color,weight=weight,rotation=rotation)
+	#}}}
 
 	#north arrow
Index: /issm/trunk-jpl/src/m/plot/checkplotoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/plot/checkplotoptions.py	(revision 17855)
+++ /issm/trunk-jpl/src/m/plot/checkplotoptions.py	(revision 17856)
@@ -50,48 +50,67 @@
 	#text
 	if options.exist('text'):
-		#1: textvalue
-		textvalues=options.getfieldvalue('text')
-		numtext=len(textvalues)
 
-		#2: textweight
+		# text values (coerce to list for consistent functionality)
+		textlist=[]
+		text=options.getfieldvalue('text','default text')
+		textlist.extend([text] if isinstance(text,str) else text)
+		numtext=len(textlist)
+
+		# text position	
+		textpos=options.getfieldvalue('textposition',[0.5,0.5])
+		if not isinstance(textpos,list):
+			raise Exception('textposition should be passed as a list')
+		textx=[item[0] for item in textpos]
+		texty=[item[1] for item in textpos]
+		if len(textx)!=numtext or len(texty)!=numtext:
+			raise Exception('textposition should contain one list of x,y vertices for every text instance')
+
+		# font size
+		if options.exist('textsize'):
+			textsize=options.getfieldvalue('textsize',12)
+			sizelist=[]
+			sizelist.extend(textsize if isinstance(textsize,list) else [textsize])
+		else:
+			sizelist=[12]
+		if len(sizelist)==1:
+			sizelist=npy.tile(sizelist,numtext)
+
+		# font color
+		if options.exist('textcolor'):
+			textcolor=options.getfieldvalue('textcolor','k')
+			colorlist=[]
+			colorlist.extend(textcolor if isinstance(textcolor,list) else [textcolor])
+		else:
+			colorlist=['k']
+		if len(colorlist)==1:
+			colorlist=npy.tile(colorlist,numtext)
+
+		# textweight
 		if options.exist('textweight'):
 			textweightvalues=options.getfieldvalue('textweight')
+			weightlist=[]
+			weightlist.extend(textweight if isinstance(textwieght,list) else [textweight])
 		else:
-			textweightvalues='n'
-		textweightvalues=npy.tile(textweightvalues,numtext)
+			weightlist=['normal']
+		if len(weightlist)==1:
+			weightlist=npy.tile(weightlist,numtext)
 
-		#3 textsize
-		if options.exist('textsize'):
-			textsizevalues=options.getfieldvalue('textsize')
+		# text rotation
+		if options.exist('textrotation'):
+			textrotation=options.getfieldvalue('textrotation',0)
+			rotationlist=[]
+			rotationlist.extend(textrotation if isinstance(textrotation,list) else [textrotation])
 		else:
-			textsizevalues=14
-		textsizevalues=npy.tile(textsizevalues,numtext)
+			rotationlist=[0]
+		if len(rotationlist)==1:
+				rotationlist=npy.tile(rotationlist,numtext)
 
-		#4 textcolor
-		if options.exist('textcolor'):
-			textcolorvalues=options.getfieldvalue('textcolor')
-		else:
-			textcolorvalues='k'
-		textcolorvalues=npy.tile(textsizevalues,numtext)
-
-		#5 textposition
-		if options.exist('textposition'):
-			options.getfieldvalue('textposition')
-		else:
-			raise Exception("plotmodel error message: 'textposition' option is missing")
-
-		#6 textrotation
-		if options.exist('textrotation'):
-			textrotationvalues=options.getfieldvalue('textrotation')
-		else:
-			textrotationvalues=0
-		textrotationvalues=npy.tile(textrotationvalues,numtext)
-
-		options.changfieldvalue('text',textvalues)
-		options.changfieldvalue('textsize',textsizevalues)
-		options.changfieldvalue('textweight',textweightvalues)
-		options.changfieldvalue('textcolor',textcolorvalues)
-		options.changfieldvalue('textposition',textpositionvalues)
-		options.changfieldvalue('textrotation',textrotationvalues)
+		options.changefieldvalue('text',textlist)
+		options.addfield('textx',textx)
+		options.addfield('texty',texty)
+		options.changefieldvalue('textsize',sizelist)
+		options.changefieldvalue('textcolor',colorlist)
+		options.changefieldvalue('textweight',weightlist)
+		options.changefieldvalue('textrotation',rotationlist)
 
 	#expdisp
