
Tiled Graphs

RGerkin
Function TileAppend(waves,rows,cols[,left,right,low,high,xLog,yLog,box,labels,xLabel,yLabel,xMargin,yMargin,grout]) wave /wave waves // Can be a bunch of 1D waves, a matrix (will plot columns), or a stack (will plot beams, and use the dimension sizes of the stack instead of provided rows and cols values). variable rows,cols variable left,right // Left and right values for x-axes. variable low,high // Low and high values for y-axes. variable xLog,yLog // Set x and/or y axes to log scale. variable box // 0 for no mirror axes, 1 for only mirror x-axes, 2 for only mirror y-axes, and 3 for mirror axes both ways. string labels // Labels for axes. string xLabel,yLabel // Master labels for the axes. variable xMargin,yMargin // Margins (as a fraction of graph size) for the axes closests to the edge of the graph window. variable grout // Grout as a fraction of the graph window size. xMargin=paramisdefault(xMargin) ? 0.02 : xMargin yMargin=paramisdefault(yMargin) ? 0.02 : yMargin grout=paramisdefault(grout) ? 0.02 : grout wave w=waves[0] if(dimsize(w,1)<=1) // One of a bunch of 1D waves. variable numWaves=numpnts(waves) string mode="waves" elseif(dimsize(w,2)<=1) // A matrix. numWaves=dimsize(w,1) mode="matrix" else // A stack. numWaves=dimsize(w,0)*dimsize(w,1) rows=dimsize(w,0) cols=dimsize(w,1) mode="stack" endif variable i for(i=0;i<numwaves;i+=1) wave w=waves[i] if(!waveexists(w)) continue endif variable row=mod(i,rows) variable col=floor(i/rows) string yAxis,xAxis sprintf xAxis,"x_%d",col sprintf yAxis,"y_%d",row strswitch(mode) case "matrix": appendtograph /L=$yaxis /B=$xAxis w[][i] break case "stack": appendtograph /L=$yaxis /B=$xAxis w[row][col][] break default: appendtograph /L=$yaxis /B=$xAxis w break endswitch if(!paramisdefault(left) && !paramisdefault(right)) setAxis $xAxis left,right endif if(!paramisdefault(low) && !paramisdefault(high)) setAxis $yAxis low,high endif ModifyGraph axOffset($yAxis)=-4,axOffset($xAxis)=-1,btLen=1 variable xLow=xMargin+col/cols*(1-xMargin) variable xHigh=xMargin+((col+1)/cols-grout)*(1-xMargin) variable yLow=yMargin+row/rows*(1-yMargin)//1-(row+1)/rows+yMargin variable yHigh=yMargin+((row+1)/rows-grout)*(1-yMargin)//1-row/rows-grout variable numXTicks=ceil(10/cols) variable numYTicks=ceil(10/rows) //print xLow,xHigh,yLow,yHigh modifygraph axisEnab($xAxis)={xLow,xHigh},freepos($xAxis)={yMargin,kwFraction},lblpos($xAxis)=100,nticks($xAxis)=numXTicks,log($xAxis)=xLog modifygraph axisEnab($yAxis)={yLow,yHigh},freepos($yAxis)={xMargin,kwFraction},lblpos($yAxis)=100,nticks($yAxis)=numYTicks,log($yAxis)=yLog if(!paramisdefault(labels)) strswitch(labels) case "waveNames": label $xAxis nameofwave(waves[col]) label $yAxis nameofwave(waves[row]) break case "dfNames": label $xAxis getwavesdatafolder(waves[col],0) label $yAxis getwavesdatafolder(waves[row],0) break default: label $xAxis stringfromlist(col,labels) label $yAxis stringfromlist(row,labels) break endswitch endif if(box & 1) if(row>0) sprintf xAxis,"xLow_%d_%d",row,col newfreeaxis /b $xAxis ModifyGraph axisEnab($xAxis)={xLow,xHigh},freepos($xAxis)={yLow,kwFraction},nticks($xAxis)=0 endif sprintf xAxis,"xHigh_%d_%d",row,col newfreeaxis /b $xAxis ModifyGraph axisEnab($xAxis)={xLow,xHigh},freepos($xAxis)={yHigh,kwFraction},nticks($xAxis)=0 endif if(box & 2) if(col>0) sprintf yAxis,"yLow_%d_%d",row,col newfreeaxis /l $yAxis ModifyGraph axisEnab($yAxis)={yLow,yHigh},freepos($yAxis)={xLow,kwFraction},nticks($yAxis)=0 endif sprintf yAxis,"yHigh_%d_%d",row,col newfreeaxis /l $yAxis ModifyGraph axisEnab($yAxis)={yLow,yHigh},freepos($yAxis)={xHigh,kwFraction},nticks($yAxis)=0 endif endfor if(!paramisdefault(xLabel)) textbox /o=0/f=0/t=1/a=mt/x=0/y=0 xLabel endif if(!paramisdefault(yLabel)) textbox /o=90/f=0/t=1/a=rc/x=0/y=0 yLabel endif End

Forum

Support

Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More