Bonjour à tout le monde,
Je réalise mes PROC SGPLOT en faisant un appel de series/scatter/etc pour chaque groupe que je souhaite représenter sur mon graphique. Par exemple :
Aujourd'hui j'aimerai plutôt passer par l'option GROUP qui permet de tracer autant de lignes que de groupes (plus pratique).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 PROC SGPLOT; SERIES X = numero Y = moyenne_gr1 / lineattrs=(...) name="a"; SERIES X = numero Y = moyenne_gr2 / lineattrs=(...) name="b"; keylegend "a" "b" / position=...; RUN;
Pour définir les couleurs de mes traits, les styles, les symboles pour les scatters, etc, je me sers d'un DATTRMAP.
Mon problème intervient au moment de fixer la légende. J'ai l'impression que le DATTRMAP ne fonctionne plus.
VOilà mon cide :
Comme vous pouvez le voir j'ai l'impression que l'application du format supprime tous les effets du DATTRMAP.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 data _donnees; input id visite valeur grp grp2; cards; 1 1 50 1 1 1 2 55 1 1 1 3 50 1 1 1 4 25 1 1 2 1 25 2 2 2 2 25 2 2 2 3 29 2 2 2 4 20 2 2 3 1 85 1 3 3 2 67 1 3 3 3 90 1 3 3 4 75 1 3 4 1 15 2 3 4 2 29 2 1 4 3 18 2 2 4 4 35 2 1 ; run; proc sort data=_donnees; by visite grp; run; proc means data=_donnees noprint; by visite grp; var valeur; output out=_out median=mediane q1=quartile1 q3=quartile3 ; run; data _dattrmap; length id $15. markercolor $15. fillcolor $15. linecolor $15. markersymbol $15.; /* Groupe */ id="GRP"; value="1"; linecolor="green"; fillcolor="green"; markercolor="green"; markersymbol="circlefilled"; output; id="GRP"; value="2"; linecolor="blue"; fillcolor="blue"; markercolor="blue"; markersymbol="starfilled"; output; run; /* PROC SGPLOT sans rien */ proc sgplot data=_out dattrmap=_dattrmap; xaxis type=linear; yaxis min=0 max=100; scatter x=visite y=mediane / yerrorlower=quartile1 yerrorupper=quartile3 group = grp attrid=GRP; series x=visite y=mediane / group = grp attrid=GRP; run; /* Elle fonctionne/ */ /* Je fais un PROC FORMAT pour mes groupes */ proc format; value grpe 1 = "Groupe 1" 2 = "Groupe 2" ; run; /* SGPLOT ne fonctionne plus quand j'applique le format */ proc sgplot data=_out dattrmap=_dattrmap; xaxis type=linear; yaxis min=0 max=100; scatter x=visite y=mediane / yerrorlower=quartile1 yerrorupper=quartile3 group = grp attrid=GRP; series x=visite y=mediane / group = grp attrid=GRP; label grp = "Groupe"; format grp grpe.; run;
J'ai essayé plein d'autres codes mais je ne veux pas vous submerger avec.
En gros, j'ai essayé dans le DATTRMAP de faire d'autres ID avec comme VALUES "Groupe 1"/"Groupe 2", mais ça ne fonctionne pas non plus (ma variable est toujours numérique dans la table, je pense que c'est ça). Avec format ou sans format.
Comme vous faites vos légendes vous ?
Merci,
alers
--
Ajout :
Si je comprends bien, le VALUE de DATTRMAP doit être une valeur formattée. Quand je fais une PROC FORMAT pour créer "Groupe 1" et "Groupe 2" et mettre en VALUE "Groupe 1" et "Groupe 2", voilà l'avertissement que j'obtiens :
"WARNING: Les doublons ne sont pas autorisés dans DiscreteAttrMap:
G"
Le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 data _dattrmap; length id $15. markercolor $15. fillcolor $15. linecolor $15. markersymbol $15.; /* Groupe */ id="GRP"; value="1"; linecolor="green"; fillcolor="green"; markercolor="green"; markersymbol="circlefilled"; output; id="GRP"; value="2"; linecolor="blue"; fillcolor="blue"; markercolor="blue"; markersymbol="starfilled"; output; /* Groupe */ id="GRPF"; value="Groupe 1"; linecolor="green"; fillcolor="green"; markercolor="green"; markersymbol="circlefilled"; output; id="GRPF"; value="Groupe 2"; linecolor="blue"; fillcolor="blue"; markercolor="blue"; markersymbol="starfilled"; output; run; proc format; value grpe 1 = "Groupe 1" 2 = "Groupe 2" ; run; proc sgplot data=_out dattrmap=_dattrmap; xaxis type=linear; yaxis min=0 max=100; scatter x=visite y=mediane / yerrorlower=quartile1 yerrorupper=quartile3 group = grp attrid=GRPF; series x=visite y=mediane / group = grp attrid=GRPF name="a"; keylegend "a" / position=topleft location=inside noborder; format grp grpe.; run;
Partager