pro movisPlotMulti, name, class, covar, data, range=range, label=label cgPS_open, Filename=name, /metric, /decomposed, /encapsulated, $ xSize=40, ySize=40, language_level=2, /quiet xLen = 0.176 yLen = xLen xSep = 0.01 ySep = 0.01 xBot = 0.085 yBot = 0.05 ccTickInt= [0.2, 0.2, 0.2, 0.2, 0.2, 0.1 ] ccTickMin= [ 4 , 4 , 4 , 4 , 4 , 4 ] nbClass = n_elements(class) nbComb =n_elements(label) theta=2*!PI*findgen(361)/360 ;--III.4.2-- Loop over Combinations for kC1=0, nbComb-1 do begin for kC2=nbComb-1, kC1+1, -1 do begin ;--III.4.3--Prepare Plot OutLay ;--III.4.3/A--XY Range lonX = [ covar[*,kC1,kC2].meanX+covar[*,kC1,kC2].stdA, $ covar[*,kC1,kC2].meanX-covar[*,kC1,kC2].stdA, data.col[kC1]] lonY = [ covar[*,kC1,kC2].meanY+covar[*,kC1,kC2].stdB, $ covar[*,kC1,kC2].meanY-covar[*,kC1,kC2].stdB, data.col[kC2]] xRang = range[*,kC1] yRang = range[*,kC2] ;--III.4.3/B--Graph position pos= [xBot + kC1*xLen, $ yBot + (kC2-1)*xLen, $ xBot + (kC1+1)*xLen, $ yBot + (kC2 )*xLen ] ;--III.4.3/C--XY Axes On the First column if kC1 eq 0 then begin ;--Last line if kC2 eq kC1+1 then begin cgPlot, lonX, lonY, /NoData, /NoErase, /Normal, position=pos, $ xStyle=1, xRange=xRang, xTitle=label[kC1], $ yStyle=1, yRange=yRang, yTitle=label[kC2], $ xTickInt=ccTickInt[kC1], xMinor=ccTickMin[kC1], $ yTickInt=ccTickInt[kC2], yMinor=ccTickMin[kC2] ;--Other lines endif else begin cgPlot, lonX, lonY, /NoData, /NoErase, /Normal, position=pos, $ xStyle=1, xRange=xRang, xTickName = replicate(' ',20), $ yStyle=1, yRange=yRang, yTitle=label[kC2], $ xTickInt=ccTickInt[kC1], xMinor=ccTickMin[kC1], $ yTickInt=ccTickInt[kC2], yMinor=ccTickMin[kC2] endelse ;--III.4.3/D--XY Axes On the other columns endif else begin ;--Last line if kC2 eq kC1+1 then begin cgPlot, lonX, lonY, /NoData, /NoErase, /Normal, position=pos, $ xStyle=1, xRange=xRang, xTitle=label[kC1], $ yStyle=1, yRange=yRang, yTickName = replicate(' ',20), $ xTickInt=ccTickInt[kC1], xMinor=ccTickMin[kC1], $ yTickInt=ccTickInt[kC2], yMinor=ccTickMin[kC2] ;--Other lines endif else begin cgPlot, lonX, lonY, /NoData, /NoErase, /Normal, position=pos, $ xStyle=1, xRange=xRang, xTickName = replicate(' ',20), $ yStyle=1, yRange=yRang, yTickName = replicate(' ',20), $ xTickInt=ccTickInt[kC1], xMinor=ccTickMin[kC1], $ yTickInt=ccTickInt[kC2], yMinor=ccTickMin[kC2] endelse endelse ;--III.4.4--Plot Each Object within the Class for kC=0, nbClass-1 do begin cur=where( strcmp(data.class,class[kC].label) ) cgPlot, /OverPlot, data[cur].col[kC1], data[cur].col[kC2], $ psym=class[kC].sym, color=class[kC].color, symSize=class[kC].size endfor ;--III.4.5--Plot Cross + Ellipse for each Class for kC=0, nbClass-1 do begin ;--III.4.5/A--Long-Axis Line xA = [-1,1]*covar[kC,kC1,kC2].stdA yA = [0,0] rotXA = xA*covar[kC,kC1,kC2].cos - yA*covar[kC,kC1,kC2].sin + covar[kC,kC1,kC2].meanX rotYA = xA*covar[kC,kC1,kC2].sin + yA*covar[kC,kC1,kC2].cos + covar[kC,kC1,kC2].meanY cgPlot, rotXA, rotYA, color=class[kC].color, /OverPlot ;--III.4.5/B--Short-Axis Line xB = [0,0] yB = [-1,1]*covar[kC,kC1,kC2].stdB rotXB = xB*covar[kC,kC1,kC2].cos - yB*covar[kC,kC1,kC2].sin + covar[kC,kC1,kC2].meanX rotYB = xB*covar[kC,kC1,kC2].sin + yB*covar[kC,kC1,kC2].cos + covar[kC,kC1,kC2].meanY cgPlot, rotXB, rotYB, color=class[kC].color, /OverPlot ;--III.4.5/C--Ellipse x = covar[kC,kC1,kC2].stdA * cos(theta) y = covar[kC,kC1,kC2].stdB * sin(theta) rotX = x*covar[kC,kC1,kC2].cos - y*covar[kC,kC1,kC2].sin + covar[kC,kC1,kC2].meanX rotY = x*covar[kC,kC1,kC2].sin + y*covar[kC,kC1,kC2].cos + covar[kC,kC1,kC2].meanY cgPlot, rotX, rotY, color=class[kC].color, /OverPlot endfor endfor endfor ;--III.4.5-- Display Key pos= [xBot + 3*xLen, $ yBot + (0)*yLen, $ xBot + (5)*xLen, $ yBot + (2 )*yLen ] cgPlot, [0,1], [0,1], /NoData, /NoErase, /Normal, position=pos, xStyle=5, yStyle=5 xKey = 0.2 xShi = 0.03 yKey = 0.90 yShi =-0.075 yTxt = -0.015 for kC=0, nbClass-1 do begin cur=where( strcmp(data.class,class[kC].label), nbCur ) cgPlot, xKey, yKey+kC*yShi, psym=class[kC].sym, color=class[kC].color, symSize=class[kC].size, /OverPlot cgText, xKey+xShi, yKey+kC*yShi+yTxt, class[kC].label+'-types: ', color=class[kC].color cgText, xKey+xShi*13, yKey+kC*yShi+yTxt, strtrim(string(nbCur),2), align=1, color=class[kC].color endfor cgPS_close, /png, Delete_PS=0 end