3 Linien auf 2 Achsen: Problem mit Legende
Liebe SAS-Gurus,
rer unten folgende Code erzeugt eine Grafik: 3 Linien auf 2 Achsen.
Meine Probleme:
1. Wie schaffe ich es, dass alle 3 Linien in einer einzigen Legende aufgeführt werden (Plot1)?
2. Vertausche ich die beiden Achsen (Plot2) so tritt das Problöem auf, dass ich an der rechten Achse überhaupt keine Achsenbeschriftung mehr habe. Warum?
input linie1 linie2 linie3 monat ;
datalines;
0.01 0.02 1000 1
0.02 0.03 2200 2
0.03 0.04 2400 3
0.04 0.02 3000 4
0.03 0.01 4000 5
0.03 0.04 5500 6
run;
/* Erzeuge Diagramm */
GOPTIONS RESET=ALL GUNIT=pt FTEXT = "Arial" HTEXT=12;
ODS HTML FILE = "c:\temp\beispiel.html" gpath="c:\temp";
GOPTIONS DEVICE=PNG XPIXELS=800 YPIXELS=600 CBACK=CXEEEEEE;
SYMBOL1 INTERPOL=JOiN HEIGHT=1 VALUE=NONE CI=BLUE LINE=1 WIDTH=6;
SYMBOL2 INTERPOL=JOIN HEIGHT=1 VALUE=NONE CI=green LINE=1 WIDTH=4 ;
SYMBOL3 INTERPOL=JOIN HEIGHT=1 VALUE=NONE CI=red LINE=2 WIDTH=4 ;
Legend1 FRAME POSITION=(BOTTOM CENTER OUTSIDE) LABEL=("") FRAME CBORDER=black CFRAME=white CSHADOW=grey SHAPE=LINE(1cm);
Axis1 STYLE=1 WIDTH=1 MINOR=NONE LABEL=(ANGLE=90 HEIGHT=16pt JUSTIFY=Right) ORDER=(0 TO 6000 BY 500);
Axis2 STYLE=1 WIDTH=1 MINOR=NONE LABEL=(HEIGHT=16pt JUSTIFY=Center 'Monate') ;
Axis3 STYLE=1 WIDTH=1 MINOR=NONE LABEL=(ANGLE=-90 HEIGHT=16pt JUSTIFY=Left) ORDER=(0 TO 0.06 BY 0.005);
TITLE1 H=20 "Test_Title1";
TITLE2 "Test_Title2";
/*Plot1*/
PROC GPLOT DATA = analyse;
PLOT linie3 * monat = 1/
OVERLAY VAXIS=AXIS1 HAXIS=AXIS2 FRAME CFRAME=white legend=legend1;
PLOT2 linie1 * monat = 2 linie2 * monat = 3 /
OVERLAY VAXIS=AXIS3 LEGEND=LEGEND1 VREF=(0 TO 0.06 BY 0.005) ;
RUN; QUIT;
ODS HTML CLOSE;
/*Plot2*/
PROC GPLOT DATA = analyse;
PLOT linie1 * monat = 1 linie2 * monat = 2 /
OVERLAY VAXIS=AXIS3 LEGEND=LEGEND1 VREF=(0 TO 0.06 BY 0.005) ;
PLOT2 linie3 * monat = 3/
OVERLAY VAXIS=AXIS1 HAXIS=AXIS2 FRAME CFRAME=white legend=legend1;
RUN; QUIT;
- Anmelden oder Registrieren um Kommentare zu schreiben

Holzhammer
Hallo Robert,
ich bin mit den Legendenoptionen auch nicht so firm, eine Möglichkeit (besagter Holzhammer) wäre es aber, in das PLOT Statement einen dritten Plotaufruf mit einer Dummyvariablen einzufügen , für die es nur missing values gibt, so daß zwar ein Legendeneintrag erzeugt, aber keine zusätzliche Linie in den Plot gezeichnet wird. Die Legende für die rechte y-Achse wird darüber hinaus unterdrückt. Das könnte dann so aussehen
input linie1 linie2 linie3 monat linie3d ;
datalines;
0.01 0.02 1000 1 .
0.02 0.03 2200 2 .
0.03 0.04 2400 3 .
0.04 0.02 3000 4 .
0.03 0.01 4000 5 .
0.03 0.04 5500 6 .
run;
/*Plot2*/
PROC GPLOT DATA = analyse;
PLOT linie1 * monat = 1 linie2 * monat = 2 linie3d*monat=3 / HAXIS=AXIS2
OVERLAY VAXIS=AXIS3 LEGEND=LEGEND1 VREF=(0 TO 0.06 BY 0.005) ;
PLOT2 linie3 * monat = 3/
OVERLAY VAXIS=AXIS1 FRAME CFRAME=white nolegend;
RUN; QUIT;
Die haxis-Option aus Deinem Plot2 Beispiel oben akzeptiert SAS übrigens nur als Option des PLOT-Statements, aber nicht des PLOT2-Statements.
Wenn der darzustellende Datensatz nicht zu groß ist, kann man sich die Tabelle evtl. kurzfristig mit den missings "zumüllen", andernfalls müßte man nach mal tiefer in die LEGEND-Statement Möglichkeiten einsteigen oder gar zur Erstellung der Legende via annotate-Tabelle übergehen.
Das Problem mit der fehlenden Achsenbeschriftung kann ich leider nicht reproduzieren, bei mir ist alles da.
Beste Grüße
Felix