top of page

GRAPHIQUES

Sous SAS, pour faire un graphique, on utilise la fonction sgplot. Je vais vous présenter deux types de graphiques : un nuage de dispersion et un diagramme en barres.

Pour faire un nuage de points / de dispersion, on utilise l'option scatter de la fonction sgplot.

La structure est la suivante :

ods graphics on / width=10in height=7in;

proc sgplot data=Table;

title height=1.5 color=grey justify=center italic 'Titre du graphique';

scatter x=Variable_Abscisse y=Variable_Ordonnée / markerattrs=(color=blue symbol=Circle);

xaxis label="Nom axe des abscisses" grid;

yaxis label="Nom axe des ordonnées" grid;

run;

ods graphics off;

 

Avec width et height, on gère la longueur et la hauteur du graphique.

Avec data, on indique la table dans laquelle il y a les données que l'on souhaite représenter.

Avec la 3ème ligne (title), on gère les paramètre du titre du graphique.

Avec markerattrs, on gère le type et la couleur des symboles représentant les observations.

Enfin, avec xaxis et yaxis, on gère les paramètres des axes des abscisses et des ordonnées.

Je vais maintenant vous présenter, 3 types de diagramme en barres : barres verticales, barres horizontales et barres juxtaposées.

Diagramme à barres verticales :

ods graphics on / width=10in height=7in;

proc sgplot data=Table;

title height=1.5 color=grey justify=right italic 'Titre du graphique';

vbar Variable / stat=freq datalabel fillattrs=(color=orange);

xaxis label="Nom axe des abscisses";

yaxis label="Nom axe des ordonnées (Effectif par exemple)" grid values=(0 to 15 by 5) ;

footnote height=0.8 justify=left 'Information sur le graphique';

run;

ods graphics off;

On retrouve beaucoup de paramètres communs avec le nuage de dispersion.

Avec stat, on indique quelle représentation de l'effectif on souhaite : nombre (freq), pourcentage (percent) ...

datalabel permet d'afficher les effectifs au dessus des barres et si on le remplace par seglabel, les effectifs seront affichés dans les barres.

Avec fillattrs, on gère les caractéristiques des barres.

Enfin, avec values (yaxis), on gère l'échelle de l'axe.

Pour faire un diagramme à barres horizontales, il faut juste remplacer vbar par hbar.

Diagramme à barres juxtaposées :

ods graphics on / width=10in height=7in;

proc sgplot data=Table pctlevel=group;

title height=1.5 color=grey justify=right italic 'Titre du graphique';

styleattrs datacolors=(purple orange) datacontrastcolors=(black);

vbar Variable_Abscisses / stat=percent group=Variable_Légende seglabel groupdisplay=cluster;

xaxis label="Nom axe des abscisses";

yaxis label="Nom axe des ordonnées (Effectif par exemple)" grid values=(0 to 1 by 0.1);

keylegend / location=outside position=bottom title="Légende";

footnote height=0.8 justify=left 'Information sur le graphique';

run;

ods graphics off;

À savoir : groupdisplay=cluster permet d'indiquer que l'on souhaite un diagramme à barres juxtaposées.

Si vous voulez d'autres informations sur les graphiques, vous pouvez aller sur le support de SAS.

Graphique utilisant une variable d'une question à choix multiple d'un questionnaire :

Imaginons maintenant, que vous devez analyser les réponses d'un questionnaire et que voulez représenter les réponses d'une question à choix multiple dans un graphique univarié (barres verticales par exemple).

Vous avez donc une variables par case / réponse, codée 0 pour non cochée et 1 pour cochée.

Afin de pouvoir réaliser votre graphique, il vous faut regrouper toutes vos réponses dans une seule et même variable. Pour cela, il faut utiliser du code SQL.

On regroupe les réponses :

PROC SQL;

CREATE TABLE Question_Multiple (Q1 INT);

INSERT INTO Question_Multiple SELECT Q1_1 FROM Data WHERE Q1_1=1;

INSERT INTO Question_Multiple SELECT Q1_2*2 FROM Data WHERE Q1_2=1;

INSERT INTO Question_Multiple SELECT Q1_3*3 FROM Data WHERE Q1_3=1;

INSERT INTO Question_Multiple SELECT Q1_4*4 FROM Data WHERE Q1_4=1;

RUN;

/* Les variables correspondant aux cases (cochées ou non) de la question à choix multiple sont nommées Q1_1, Q1_2, Q1_3 et Q1_4 */

/* La table contenant les données non recodées se nomme Data */

On crée le format afin de recoder les réponses :

PROC FORMAT;

VALUE Q1_format

1 = "Rien"
2 = "Avoir une bonne note"
3 = "Tâches ménagères (table, ménage ...)"
4 = "Avoir un bon comportement";

RUN;

 

On applique le format :

DATA Question_Multiple_Recodée;

SET Question_Multiple;

FORMAT Q1 Q1_format.;

RUN;

 

On crée le graphique à barres verticales :

ods graphics on / width=10in height=7in;

proc sgplot data=Question_Multiple_Recodée;

title height=1.5 color=grey justify=right italic ;

vbar Q1/ stat=freq datalabel fillattrs=(color=orange);

xaxis label="Que faites-vous en échange de cette rémunération ?";

yaxis label="Effectif" grid values=(0 to 100 by 5) ;

footnote height=0.8 justify=left 'Enquête auprès des lycéens';

run;

ods graphics off;

Enfin, si vous voulez faire un graphique multivarié (barres juxtaposées par exemple) d'une question à choix multiple (plusieurs réponses / variables) et d'une question à choix unique (une seule réponse / variable), il faudra insérer dans une table SQL, en plus des variables de la question à choix multiple, la variable correspondant à la question à choix unique.

PROC SQL;

CREATE TABLE Question_Multiple (Q1 INT Q2 INT);

INSERT INTO Question_Multiple SELECT Q2, Q1_1 FROM Data WHERE Q1_1=1;

INSERT INTO Question_Multiple SELECT Q2, Q1_2*2 FROM Data WHERE Q1_2=1;

INSERT INTO Question_Multiple SELECT Q2, Q1_3*3 FROM Data WHERE Q1_3=1;

INSERT INTO Question_Multiple SELECT Q2, Q1_4*4 FROM Data WHERE Q1_4=1;

RUN;

/* Les variables correspondant aux cases (cochées ou non) de la question à choix multiple sont nommées Q1_1, Q1_2, Q1_3 et Q1_4 et la variable de la question à choix unique est nommé Q2. */

/* La table contenant Les données non recodées se nomme Data. */

On crée le format afin de recoder les réponses :

PROC FORMAT;

VALUE Q1_format

1 = "Rien"
2 = "Avoir une bonne note"
3 = "Tâches ménagères (table, ménage ...)"
4 = "Avoir un bon comportement";

VALUE Q2_format

1 = "Femme"
2 = "Homme";

RUN;

 

On applique le format :

DATA Question_Multiple_Recodée;

SET Question_Multiple;

FORMAT Q1 Q1_format. Q2 Q2_format.;

RUN;

 

On crée le graphique à barres juxtaposées:

ods graphics on / width=10in height=7in;

proc sgplot data=Question_Multiple_Recodée pctlevel=group;

title height=1.5 color=grey justify=right italic "Titre du graphique";

styleattrs datacolors=(purple orange) datacontrastcolors=(black);

vbar Q1 / stat=percent group=Q2 seglabel groupdisplay=cluster;

xaxis label="Que faites-vous en échange de cette rémunération ?";

yaxis label="Pourcentage" grid values=(0 to 1 by 0.1);

keylegend / location=outside position=bottom title="Sexe";

footnote height=0.8 justify=left 'Enquête auprès des lycéens';

run;

ods graphics off;

bottom of page