Arrange Left Axes


// ArrangeLeftAxes(graphName)
// graphName contains the name of a graph to which you have appended waves using one or more free left axes.
// ArrangeLeftAxes arranges the left axes to allocate the available vertical space evenly.
// For a demo execute the Demo function below.
static Function ArrangeLeftAxes(graphName)
	String graphName				// "" for top graph
	
	if (strlen(graphName) == 0)
		graphName = WinName(0, 1)
		if (strlen(graphName) == 0)
			return -1					// No graphs - should not happen
		endif
	endif

	String leftAxisList = AxisList(graphName)
	leftAxisList = ReplaceString("bottom;", leftAxisList, "")
	Variable numLeftAxes = ItemsInList(leftAxisList)
	if (numLeftAxes == 0)
		return 0					// There are no waves selected for display
	endif
	
	if (CmpStr(leftAxisList, "left;") == 0)
		return 0					// We are not stacking traces so there is nothing to do
	endif

	Variable groutSize = .05
	Variable numGrouts = numLeftAxes - 1
	
	// Determine the percentage of plot area height to allocate to each left axis
	Variable leftAxisLength = 1.00
	if (numLeftAxes > 1)
		leftAxisLength = (1.00 - numGrouts*groutSize) / numLeftAxes
	endif
	
	Variable leftAxisStart = 0
	
	Variable i
	for(i=0; i<numLeftAxes; i+=1)
		String leftAxisName = StringFromList(i, leftAxisList)
		ModifyGraph /W=$graphName axisEnab($leftAxisName)={leftAxisStart,leftAxisStart+leftAxisLength}
		ModifyGraph /W=$graphName freePos($leftAxisName)=0
		leftAxisStart += leftAxisLength + groutSize

		ModifyGraph /W=$graphName lblPosMode($leftAxisName)=2, lblMargin($leftAxisName)=5		// Label stays near left edge of graph window
	endfor
End

Function Demo()
	DoWindow /K DemoGraph		// Kill graph if it already exists

	Make /O wave0 = sin(x/8)
	Make /O wave1 = cos(x/8)
	Make /O wave2 = wave0 * wave1
	
	Display /N=DemoGraph /W=(35,44,832,530) /L=left0 wave0
	AppendToGraph /L=left1 wave1
	AppendToGraph /L=left2 wave2

	ArrangeLeftAxes("DemoGraph")
End

Forum

Support

Gallery

Igor Pro 10

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More