NewImage from DataBrowser selection with scale bar

With this function you can create a NewImage of the wave, which is selected in the DataBrowser. Instead of the normale Igor scale, a Scale bar is inserted, which has a predefined length. You have to define the height or the width of the Newimage. The aspect ratio of this NewImage is determined by the dimdelta and not only by the number of points of each dimension.

v_length_input -> Defines the length of width or height

v_mode -> 0 for the width, 1 for the height

v_bar_length -> How long the scale should be? It will use the dimdelta of the dimensions.

v_pixel_min -> Minimum thickness of the bar. Only used if the Newimage is very flat.

s_color -> String that containts the color scale name, like "Rainbow"

v_reverse -> 0 for normal color scale, 1 for reverse

Example: f_newimage_scalebar(100,0,5,5,"Rainbow",1)

function f_newimage_scalebar(variable v_length_input, variable v_mode, variable v_bar_length, variable v_pixel_min, string s_color, variable v_reverse)
	if (v_mode!=0&&v_mode!=1)
		print "Error: Input of v_mode wrong. Choose 0 for fixed width and 1 for fixed height."
		return 0	
	endif
	string s_importwave  = getbrowserSelection(0)
	if (waveexists($s_importwave)==0)
		print "Error: No wave selected."
		return 0
	endif
	wave w_importwave=$s_importwave
	variable v_rows=dimsize(w_importwave,0)
	variable v_columns=dimsize(w_importwave,1)
	if (v_columns<=1)
		print "Error: No multidim. wave selected."
		return 0	
	endif
	variable v_row_offset=dimoffset(w_importwave,0)
	variable v_row_delta=dimdelta(w_importwave,0)
	variable v_row_length=(v_rows-1)*v_row_delta
	variable v_col_offset=dimoffset(w_importwave,1)
	variable v_col_delta=dimdelta(w_importwave,1)
	variable v_col_length=(v_columns-1)*v_col_delta
	variable v_width,v_height
	switch (v_mode)
		case 0:
			v_width=v_length_input
			v_height=(v_col_length/v_row_length)*v_width
		break
		case 1:
			v_height=v_length_input
			v_width=(v_row_length/v_col_length)*v_height
		break	
	endswitch
	string S_name //name of window of NewImage
	NewImage/K=1/F w_importwave
	string s_nameofwave=nameofwave(w_importwave)		
	ModifyImage $s_nameofwave, ctab= {*,*,$s_color,v_reverse}
	ModifyGraph nticks=0
	ModifyGraph margin(left)=10,margin(bottom)=10,margin(right)=10,margin(top)=10
	ModifyGraph width=v_width
	ModifyGraph height=v_height
	variable v_bar_length_rel=(v_bar_length/v_row_length)
	variable y_end= 0.95
	variable y_start= 0.93
	variable y_end_abs=(1-y_end)*v_height
	variable x_start=0.05
	if (x_start>(y_end_abs/v_width))
		x_start=(y_end_abs/v_width)
	endif
	variable v_x_pixel_min_rel=v_pixel_min/v_width
	variable v_y_pixel_min_rel=v_pixel_min/v_height
	variable x_end=x_start+v_bar_length_rel
	variable v_y_delta_abs=abs(y_end-y_start)*v_height
	if (y_end>(1-v_y_pixel_min_rel))
		y_end=1-v_y_pixel_min_rel
		y_start=y_end-0.02
	endif
	if (x_start<v_x_pixel_min_rel)
		x_start=v_x_pixel_min_rel
		x_end=x_start+v_bar_length_rel
	endif	
	if (v_y_delta_abs<7) //if not, height to low
		y_start=y_end-(7/v_height)
	endif
	ModifyGraph noLabel=2
	SetDrawEnv xcoord= axrel,ycoord= axrel
	DrawRect x_start,y_start,x_end,y_end
end

 

Forum

Support

Gallery

Igor Pro 10

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More