Bonjour,
J’espère trouver de l’aide sur ce forum pour un problème, sachant que je ne maîtrise absolument pas l’écriture des macros, j’ai l’habitude de les utiliser sans les comprendre .

Mon ACP représente les individus sur le premier plan factoriel, ils sont représentés par leurs identifiants (la variable « nom ») qui est écrite + ou – gros selon leur qualité de représentation, ce qui est pratique.
Par contre j’aimerai que les noms soient écrits d’une couleur correspondante à la classe à laquelle ils appartiennent (j’ai une variable « classe »), et je n’arrive pas à faire ça.
C’est la macro %acp qui me calcule l’acp, et la macro %gacpix qui dessine le plan des individus :

(programme sas: )

%acp(Biblio.Donnees, code_graphique, var1 var2 var3 var4 var5 var6 var7 var8 var9 var10,q=4,poids=Varpond);
%gacpix(x=1,y=2,nc=19,coeff=1);
run;
(les variables analysées sont var1, …, var11, er varpond est une variable de pondération).
La macro %gapcix marche très bien (mais ne fait pas de couleur), voici son code :

%macro gacpix(x=1,y=2,nc=4,coeff=1);

%* Graphique des individus;
%* x : numero axe horizontal;
%* y : numero axe vertical;
%* nc : nombre max de caracteres;


data anno;
set coorindq nobs=nind;
retain xsys ysys '2';
style='swiss';
y= prin&y;
x= prin&x;
text=substr(left(ident),1,&nc);
size=&coeff*(cosca&x+cosca&y)+0.2;
label y = "Axe &y"
x = "Axe &x";
run;

proc gplot data=anno;
title;
symbol1 v='none';
plot y*x=1 / annotate=anno frame href=0 vref=0;
run;
goptions reset=all;
quit;
%mend;
Je dispose d’une macro d’ACM (et non ACP) qui arrive à faire la couleur selon l’initiale des variables (et non individus), mais je n’ai pas réussi à adapter, lorsque j’ai adapté le journal m’indiquait que l’attribut coul (pour couleur) n’était pas reconnu, et en plus la représentation graphique faisait apparaître un cercle (de corrélation ? alors que c’était des individus et non variables) tout en laissant apparaître les axes, bref ça n’a pas fonctionné, mais je ne connais vraiment pas le langage macro. Peut-être que quelqu’un saurait comment adapter cette macro (dont le programme suit) à la précédente, pour garder la représentation des individus de l’acp (quote précédent), mais avec les couleurs de cette macro d’acm (quote suivant)?
Merci d’avance à qui aurait le courage de se pencher sur ce problème !


/*UTILISATION MACRO gafcix0 POUR FAIRE LA REPRESENTATION SIMULTANEE*/
%macro gafcix0(ident=_name_,x=1,y=2,nc=4,tp=0.8);
%* Graphique simultanee variables--individus;
%* Representation des individus par des points;
%* x : numero axe horizontal;
%* y : numero axe vertical;
%* nc : nombre max de caracteres;
data anno;
set resul;
retain xsys ysys '2';
%* style='swissb';
y= dim&y;
x= dim&x;
coul=substr(&ident,1,1);
text=substr(&ident,1,&nc);
size=1;
select;
when(coul in('A')) color='magenta';
when(coul in('B')) color='brown';
when(coul in('C')) color='red';
when(coul in('D')) color='DERO';
when(coul in('E')) color='cream';
when(coul in('F')) color='cyan';
when(coul in('G')) color='gold';
when(coul in('H')) color='gray';
when(coul in('I')) color='green';
when(coul in('J')) color='lilac';
when(coul in('K')) color='lime';
when(coul in('L')) color='maroon';
when(coul in('M')) color='olive';
when(coul in('N')) color='orange';
when(coul in('O')) color='pink';
when(coul in('P')) color='purple';
when(coul in('Q')) color='rose';
when(coul in('R')) color='salmon';
when(coul in('S')) color='blue';
when(coul in('T')) color='steel';
when(coul in('U')) color='tan';
when(coul in('V')) color='violet';
when(coul in('W')) color='vigb';
when(coul in('X')) color='black';
when(coul in('Y')) color='yellow';
when(coul in('Z')) color='STV';
when(coul in('0')) do; color='red';text='.';size=&tp;end;
otherwise do; color='black';text='.'; size=&tp;end;
end;
label y = "Axe &y"
x = "Axe &x";
keep x y text xsys ysys size color;
proc gplot data=anno;
TITLE "Premier plan factoriel de l'ACM sur les pratiques";
FOOTNOTE "Donnees provenant du questionnaire Frioul";
axis1 length=14cm; /* attention taille */
axis2 length=9cm;
symbol v=none;
plot y*x / annotate=anno frame href=0 vref=0
haxis=axis1 vaxis=axis2 ;
run;
goptions reset=all;
quit;
%mend;
/*FIN MACRO*/
Merci d'avance