PROC GPLOT <DATA = libref.data <GOUT = libref.catalog> <UNIFORM>>;
PLOT Yvar1 * Xvar1 ... Yvarn * Xvarn / options;
PLOT2 Yvar1 * Xvar1 ... Yvarn * Xvarn / options;
TITLEn;
FOOTNOTEn;
AXISn;
LEGENDn;
RUN;
QUIT;
| DATA = | Benennt den SAS-Dataset, mit dem gearbeitet werden soll. Als Default wird _last_ angenommen, der zuletzt verwendete Dataset. |
| GOUT= | Name eines SAS-Kataloges, in dem die Graphik gespeichert werden soll |
| UNIFORM | alle Graphiken die innerhalb dieses Prozeduraufrufes produziert werden, haben gleichskalierte Achsen |
| PLOT | fordert ein Diagramm für die angegebenen Variablen an; es wird immer zuerst die Y-Variable, dann die X-Variable genannt; wenn mehrere Y-Variablen die gleiche X-Variable verwenden sollen, können Klammern verwendet werden |
| PLOT2 | ergänzt eine zweite Y-Achse auf der rechten Seite |
| TITLEn; | Definition von 1 bis 10 Titeln für die Graphik |
| FOOTNOTEn; | Definition von 1 bis 10 Fußnoten für die Graphik |
| AXISn; | Definition von Achsen für die Graphik |
| LEGENDn; | Definition einer Legende für die Graphik |
| RUN; | Graphik wird gezeichnet |
| QUIT; | Beendet die Graphikprozedur (vergl. RUN-GROUP-Processing) |
GPLOT geht mit Daten anders um als GCHART. Während
in GCHART immer Klassen bzw. Gruppen gebildet werden, für
die Daten dargestellt werden, wird in GPLOT jeder einzelne Datenpunkt
dargestellt. Es werden zwei Variablen benötigt, die numerisch
oder alphanumerisch sein können.Der Wertebereich dieser Variablen
erzeugt eine X/Y-Matrix, in der die einzelnen Werte abgetragen
werden. Es wird immer zuerst die Y-Variable(n) angegeben, dann
die X-Variable.
Beispiel 34 GPLOT mit alphanumerischen Variablen
| DATA char;
LENGTH var1 var2 $2; INPUT var1 var2 @@ CARDS; a A b B c C d D e E f F g G h H
; PROC GPLOT data = char; PLOT var2 * var1; run;quit; |
|
In der Regel werden die darzustellenden Werte jedoch numerisch
sein. Dabei ist zu beachten, daß GPLOT eben nicht - wie
GCHART - automatisch Werte mit gleichem X-Wert aggregiert, sondern
einzeln darstellt. Das ist sinvoll, wenn Punktwolken dargestellt
werden sollen, für Linien- und Flächendiagramme bedeutet
dies, daß darzustellenden Werte bereits aggregiert sein
müssen.
Beispiel 35 - Bevölkerungsentwicklung in Deutschland
Wieder einmal finden die Bevölkerungszahlen für Deutschland Verwendung. Für das Arbeiten mit GCHART hatte sich diese Datenstruktur als sinnvoll erwiesen, weil die Variable "sex" verwendet werden konnte, um die Balken zu teilen oder zu gruppieren. War eine Gesamtdarstellung erwünscht, hatte GCHART automatisch die Summen berechnet.
Das Beispiel soll noch einmal verdeutlichen, wie anders GPLOT die Daten interpretiert: anstatt die Werte zu summieren, geht jede Oberservation als einzelner Punkt in die Graphik ein.
|
PROC GPLOT data = bev; PLOT value * year; run;quit; |
| |
Die Datenstruktur, die bisher Verwendung gefunden hatte, taugt also nicht für GPLOT. Da die Ausgabe von Statistikprozeduren mit CLASS- oder BY-Variablen jedoch häufig eine solche Struktur als Ergebnis erzeugt, die dann graphisch dargestellt werden soll, folgt hier jetzt ein komplexeres Beispiel das zeigt, wie eine Datenstruktur, in der eine Variable Werte enthält, eine zweite Variable die Gruppen, so umgesetzt werden kann, daß zwei Variablen entstehen, die jeweils die Werte für eine Gruppe beinhalten. Als Beispieldatensatz dient wiederum der Dataset BEV.
Beispiel 36 - Umrechnung der Datenstruktur
| DATA
_null_ male(keep=year value) female(keep=year value); set bev; if sex='m' then output male; else output female; | Dieser Datastep liest den Dataset BEV ein und erzeugt zwei Ausgabedateien, "male" und "female", die jeweils nur noch die Variablen "year" und "value" enthalten. Abhängig von der Ausprägung der Variablen "sex" werden die einzelnen Observations mit "output" in den entsprechenden Dataset geschrieben. |
| PROC DATASETS lib = work;
MODIFY male; rename value = maenner; MODIFY female; rename value = frauen; run;quit; | Jetzt sind zwei Dateien entstanden, die gleichviele Observations haben, jeweils für die gleichen Jahrgänge eine. Allerdings heißt die Werte-Variable noch in beiden Dateien "value", sie muß umbenannt werden. Das kann auch über das VAR-Fenster geschehen, hier wird aber die Prozedur DATASETS benutzt, deren Aufgabe die Verwaltung und Modifikation von SAS-Datasets ist. |
| DATA bev2;
merge male female; LABEL maenner = 'Männer' frauen = 'Frauen' ; by year; | Jetzt können die Werte wieder in einen Dataset zusammengeführt werden, dabei dient die Variablen "year" als Identifikation für die korrekte Zuordnung der Observations. |
| PROC PRINT label;
run; | Ausgabe des neuen Datasets BEV2 ins OUTPUT-Fenster |
Jetzt kann für jede der Variablen ein Plot erstellt werden:
| PROC GPLOT data=bev2;
PLOT (maenner frauen) * year
; run;quit; |
|
GPLOT produziert für jede angegebene Kombination
von Y- und X-Variablen eine eigene Graphik. Oft sollen aber z.B.
verschiedene Kurven in einer Graphik zusammengefaßt werden,
um den direkten Vergleich zu ermöglichen. Hierfür muß
die Option "overlay" angegeben werden. Dann werden alle
mit diesem PLOT-Statement erzeugten Plots in einer Graphik dargestellt.
Beispiel 37 - Überlagerung von mehreren Plots
Die Überlagerung von Plots macht es möglich, die Werte direkt miteinander zu vergleichen, allerdings tauchen hier zwei Probleme auf:
| PROC GPLOT data=bev2;
PLOT (maenner frauen) * year / overlay
; run;quit; |
|
Wichtigste Graphikelemente sind bei GPLOT neben den eigentlichen Werten die Achsen. Anders als Bei GCHART ist hier immer klar, welche Achse die X-, und welche die Y-Achse ist, deswegen heißen die Achsen auch nicht "midpoint-axis" und "response-axis" sondern "vertical" und "horizontal axis" - entsprechend mit "v" bzw. "h" abgekürzt.
Analog zu GCHART kann eine Farbe für die Achse definiert werden. Umgekehrt kann durch Angabe von "noaxis" das Zeichnen der Achsen unterbunden werden.
| caxis | Farbe für die Darstellung von Achsen |
| noaxis | unterdrückt das Zeichnen von Legenden |
| ctext | Farbe für die Achsenbeschriftung |
Zwei Angaben sind möglich: zum einen ein Intervall, das ist sinnvoll, wenn die X-Variable numerisch und kontinuierlich ist. Stattdessen kann aber auch auf ein AXIS-Statement verwiesen werden, das eine genaue Definition für die Darstellung enthält.
Zum anderen kann die Anzahl der "minor tickmarks" festgelegt werden, das ist die Anzahl der Striche zwischen beschrifteten Achsenabschnitten.
| haxis = liste | AXISn | Intervall für X-Achse oder AXIS-Statement |
| hminor = n | Anzahl der minor tickmarks |
Dementsprechend sind hier ebenfalls zwei Angaben sind möglich, das Intervall für numerische kontinuierliche Y-Variablen und die Anzahl der "minor tickmarks".
| vaxis = liste | AXISn | Intervall für Y-Achse oder AXIS-Statement |
| vminor = n | Anzahl der minor tickmarks |
Beispiel 38 - hminor & vminor
| PROC GPLOT data=bev2;
PLOT (maenner frauen) * year / overlay caxis = blue ctext = cyan hminor = 0 vminor = 1
; run;quit; |
|
Die Optionen für Rahmen entsprechen denen von GCHART:
| frame | fordert einen Rahmen um die Graphik an |
| cframe = farbe | Hintergrundfarbe für den vom Rhamen umschlossenen Bereich |
Die Option "grid" erzeugt ein Gitterraster, das sich an den beschrifteten X- bzw. Y-Achsenabschnitten orientiert. Leider kann dieses Raster nicht weiter gelayoutet werden.
| grid | Punktraster an allen major tickmarks |
Beispiel 39 - Frame & Grid
| PROC GPLOT data=bev2;
PLOT (maenner frauen) * year / overlay grid caxis = green hminor = 0 vminor = 1 frame cframe = gray
; run;quit; |
|
Anders als bei GCHART können bei GPLOT Referenzlinien für beide Achsen angegeben werden, so daß auch hier ein Gitter entsteht. Die Referenzlinien werden aber immer hinter die Plots gezeichnet, so daß hier keine Option "clipref" nötig ist.
Es können automatisch horizontale Referenzlinien an allen beschrifteten Abhschnitten der X-Achse gezeichnet werden - Option "autohref", oder es wird mit "href = liste" eine Liste von Punkten angegeben, an denen Referenzlinien gezeichnet werden sollen. Horizontalte Referenzlinien beziehen sich auf die Variable, die in X-Richtung dargestellt wird, die Referenzlinien selbst werden also vertikal dargestellt.
| autohref | Referenzlinien an alllen major tickmarks |
| href = liste | Liste von X-Achsenabschnitten, an denen Referenzlinien gezeichnet werden |
| chref = farbe | Farbe für die Referenzlinien |
Es können automatisch vertikale Referenzlinien an allen beschrifteten Abhschnitten der Y-Achse gezeichnet werden - Option "autovref", oder es wird mit "vref = liste" eine Liste von Punkten angegeben, an denen Referenzlinien gezeichnet werden sollen. Vertikale Referenzlinien beziehen sich auf die Variable, die in Y-Richtung dargestellt wird, die Referenzlinien selbst werden also horizontal dargestellt.
| autovref | Referenzlinien an allen major tickmarks |
| vref = liste | Liste von Y-Achsenabschnitten, an denen Referenzlinien gezeichnet werden |
| cvref = farbe | Farbe für die Referenzlinien |
Beispiel 40 Referenzlinien & GPLOT
| PROC GPLOT data=bev2;
PLOT (maenner frauen) * year / overlay hminor = 0 vminor = 1 frame autohref vref = 25000 27500 30000 32500 cvref = blue chref = red
; run;quit; |
|
Die unterschiedliche Darstellung der Werte wird in GPLOT nicht wie in der Prozedur GCHART über verschiedene Statements wie HBAR, VBAR oder PIE erreicht, sondern über das SYMBOL-Statement gesteuert.
Wie die einzelnen Werte miteinander in Beziehung zu setzen sind, erfährt GPLOT aus dem SYMBOL-Statement und innerhalb dieses Statements aus der Option "interpol=", abgekürzt "i=".
| none | jeder Wert wird einzeln als Punkt dargestellt |
| join | Punkte werden durch Linien miteinander verbunden |
| spline/sm/l | unterschiedliche Glättungsverfahren, die Punkte werden durch Kurven miteinander verbunden; es können weitere Optionen gewählt werden, die an den Ausdruck angehängt werden, genauere Informationen finden sich in der Online-Hilfe oder in der SAS/GRAPH-Dokumentation |
| needle | Jeder Werte wird mit durch eine senkrechte Linie mit der Basis verbunden |
| step | Jeder Wert wird durch einen waagrechten Strich repräsentiert; es können weitere Optionen gewählt werden, die an den Ausdruck angehängt werden, s.u. |
| box | Box-Whisker-Plot; zeigt die Verteilung der Werte innerhalb jeder Ausprägung der X-Variablen an |
| hilo | niedrigster und höchster Wert jeder Ausprägung der X-Variablen werden durch eine vertikale Linie miteinander verbunden; Mittelwerte werden ebenfalls angezeigt |
| std | vertikale Linie zeigt die Standardabweichung um den Mittelwert für die jeweilige Ausprägung der X-Variablen an |
| r | Darstellung von Punktwolke und darin integrierter Regressionsgerade; über Optionen können zusätzlich die Konfidenzintervalle angezeigt, und die Regressionsgleichung ausgegeben werden |
| color | c = farbe | Farbe für Symbol, Linie und andere Graphikelemente, solange keine spezifischere Definition erfolgt |
| ci = farbe | Farbe für Linien |
| cv = farbe | Farbe für das Symbol (color value) |
| co = farbe | Farbe für eine eventuelle Außenlinie (color outline; Box-Whisker-Plot) |
| line | l = [1,46] | Linientyp |
| width = n | Linienstärke |
| font | f = schriftart | Schriftart, aus der das Symbol entnommen werden soll |
| value | v = 'Letter' | Zeichen der Schriftart, das benutzt werden soll bzw. 'none', um eine vorhandene Definition zu überschreiben |
| height | h = n | Schriftgröße |
Grundsätzlich muß folgende Unterscheidung vorgenommen werden: Es gibt eine Reihe von Diagrammtypen die sinnvoll sind, wenn jedem X-Wert genau ein Y-Wert zugeordnet werden soll, d.h. wenn die Daten in aggregierter Form vorliegen. Dazu gehören Linien- und Flächendiagramme, aber z.B. auch Treppen-Diagramme. Eine zweite Gruppe von Diagrammen setzt voraus, daß mehrere Beobachtungen je X-Wert vorhanden sind, in diese Gruppe gehören Box-Whisker-Plots, Regressionen oder HILO-Diagramme.
Es gibt in der Prozedur GPLOT noch das BUBBLE-Statement, mit dem Kreise in eine X/Y-Matrix eingezeichnet werden können, wobei der Kreisdurchmesser dann einer dritten Variable entspricht. Auf diesen Graphiktypen wird hier nicht eingegangen.
Linien entstehen, indem GPLOT die einzelnen Datenpunkte miteinander verbindet. Diese Verbindung kann durch gerade Linien erfolgen, es können aber auch Kurven interpoliert werden, je nach Datenmenge und Streuung de Werte stehen noch verschiedene Glättungsalgorithmen zur Verfügung.
Das SYMBOL-Statement hat folgende Syntax:
SYMBOLn interpol = join | spline | sm | l ci = farbe;
Beispiel 41 - Liniendiagramm mit GPLOT I
Hier wird "join" als Interpolation verwendet. Die Zuordnung der SYMBOL-Statements erfolgt in der Reihenfolge, in der die Y-Variablen im PLOT-Statement aufgerufen werden.
| SYMBOL1 i=join ci=blue;
SYMBOL2 i=join ci=red; PROC GPLOT data=bev2; PLOT (maenner frauen) * year / overlay hminor = 0 vminor = 1 legend
; run;quit; |
|
Beispiel 42 - Liniendiagramm mit GPLOT II
Dieses Beispiel verwendet "spline" als Interpolationsmodus. Die Zuordnung der SYMBOL-Statements erfolgt diesmal explizit nach der Formel "Y-Variable * X-Variable = Symbol-Nr.". Übrigens hat sich die Reihenfolge in der Legende geändert, weil jetzt "frauen" als erste Plot-Variable aufgeführt wird.
|
SYMBOL1 i=spline ci=red;
SYMBOL2 i=spline ci=blue; PROC GPLOT data=bev2; PLOT frauen * year = 1 maenner * year = 2/ overlay hminor = 0 vminor = 1 legend ; run;quit; |
| |
Flächendiagramme verwenden die gleichen Symbol-Statements wie Liniendiagramme, die Füllung der Bereiche zwischen den Linien wird durch die PLOT-Option "area = n" erreicht, wobei "n" der Anzahl der Abschnitte entspricht, die gefüllt werden sollen (in der Regel wird dies die Anzahl der Variablen sein, die in Y-Richtung geplottet werden).
Die Angaben des SYMBOL-Statements beziehen sich nur auf die eigentliche Linie, Füllfarbe und Füllmuster sucht GPLOT in entsprechenden PATTERN-Statements. Findet es keine, wird das Default-Füllmuster verwendet (horizontale Linien), die Farben werden der colors-Liste der GOPTIONS entnommen.
Deshalb sollte zu jedem SYMBOL-Statement ein korrespondierendes
PATTERN-Statement abgesetzt werden, in dem Füllmuster und
-farbe entsprechend gesetzt werden.
Beispiel 43 - Flächendiagramm mit GPLOT I
Dieses Beispiel zeigt ein weiteres Problem: Die Legende zeigt weiterhin Linien an, obwohl die Darstellung flächig erfolgt. Offensichtlich wird dies von GPLOT nicht automatisch umgestellt.
|
SYMBOL1 i=join ci=blue; SYMBOL2 i=join ci=red; PATTERN1 v=s c=blue; PATTERN2 v=s c=red; PROC GPLOT data=bev2; PLOT (maenner frauen) * year / overlay area = 2 hminor = 0 vminor = 1 legend
; run;quit; |
| |
Beispiel 42 - Flächendiagramm mit GPLOT II
Natürlich können Flächendiagramme auch für die verschiedenen Kurven-Interpolationen erzeugt werden.
|
SYMBOL1 i=spline ci=blue; SYMBOL2 i=spline ci=red; PATTERN1 v=s c=blue; PATTERN2 v=s c=red; PROC GPLOT data=bev2; PLOT (maenner frauen) * year / overlay area = 2 hminor = 0 vminor = 1 legend frame cframe = gray
; run;quit; |
| |
Bei diesem Diagrammtyp werden die einzelnen Punkte
durch Linien mit der X-Achse verbunden, sodaß die Werte
schnell ablesbar sind. Dabei enstehen zwei Elemente, die getrennt
voneinander gelayoutet werden, die konkreten Werte, die durch
ein Symbol dargestellt werden, und die Linien, die ebenfalls gestaltet
werden können.
Beispiel 45 - ein Nadel-Diagramm
Hier wurde die Reihenfolge der SYMBOL-Statements und der Variablen in der PLOT-Anweisung vertauscht. Denn wenn zuerst die Nadeln für die Männer und dann die Nadeln für die Frauen gezeichnet würden, käme es zu einer Überlappung und die blauen Linien wären nicht sichtbar.
| SYMBOL1 i=needle ci=red cv = black value = 'F';
SYMBOL2 i=needle ci=blue cv = black value = 'M'; PROC GPLOT data=bev2; PLOT (frauen maenner) * year / overlay area = 2 hminor = 0 vminor = 1 legend frame cframe = gray
; run;quit; |
|
Bei Treppen-Diagrammen wird jeder Wert durch eine
Linie repräsentiert, die in Höhe des Y-Wertes entsprechend
dem X-Achsenabschnitt dargestellt wird. Der eigentliche Punkt
muß nicht dargestellt werden (value = none), kann aber in
die Linie integriert werden, indem mit "value=" ein
Symbol zugeordnet wird. Dann kann die gewünschte Ausrichtung
des Datenwerts auf der Linien (links, rechts oder zentriert) durch
Anhängen des ensprechenden Buchstabens (l/r/c) an den Interpolationsmodus
"step" erfolgen.
Beispiel 46 - Treppen-Diagramm I
|
SYMBOL1 i=step ci=blue;
SYMBOL2 i=step ci=red ; PROC GPLOT data=bev2; PLOT (maenner frauen) * year / overlay area = 2 hminor = 0 vminor = 1 legend frame
; run;quit; |
| |
Wenn die horizontalen Linien durch vertikale Linien verbunden
werden sollen, damit eine richtige Treppe entsteht, muß
an "step" ein "j" (für join) angehängt
werden.
Beispiel 47 - Treppen-Diagramm mit Optionen
|
SYMBOL1 i=stepjc ci=blue v='M' cv = gray;
SYMBOL2 i=stepjc ci=red v='F' cv = gray; PROC GPLOT data=bev2; PLOT (maenner frauen) * year / overlay hminor = 0 vminor = 1 legend frame
; run;quit; |
| |
Beispiel 48 - Treppen-Diagramm mit gefüllten Flächen
Flächenhafte Darstellungen sind auch mit Treppen-Diagrammen möglich, hier muß wieder - wie bei Linien auch - über die Option "area=" angegeben werden, wieviele Bereiche gefüllt werden sollen. Außerdem müssen Füllmuster und -farben über korrespondierende PATTERN-Statements angegeben werden.
|
SYMBOL1 i=stepjc ci=blue; SYMBOL2 i=stepjc ci=red; PATTERN1 v=s c=blue;
PATTERN2 v=s c=red; PROC GPLOT data=bev2; PLOT (maenner frauen) * year / overlay area = 2 hminor = 0 vminor = 1 legend frame
; run;quit; |
| |
Scatter-Plots oder Punktwolken-Diagramme sind die
Default-Darstellungsart von GPLOT. Jeder einzelne Wert wird dargestellt,
als Symbole werden Buchstaben verwendet. Einige SAS-Schriftarten
bieten Sonderzeichen, die verwendet werden können (z.B. MARKER,
SPECIAL oder CARTOG)
Beispiel 49 - Scatter-Plot I
|
SYMBOL1 f = zapfbi v = 'M' cv=blue h = 5 pct; SYMBOL2 f = zapfbi v = 'F' cv=red h = 5 pct; PATTERN1 v=s c=blue;
PATTERN2 v=s c=red; PROC GPLOT data=bev2; PLOT (maenner frauen) * year / overlay area = 2 hminor = 0 vminor = 1 legend frame
; run;quit; |
| |
Beispiel 50 - Scatter-Plot mit Sonderzeichen
Hier noch einmal das gleiche Beispiel, diesmal wurde aber eine andere Schriftart gewählt.
|
SYMBOL1 f = marker v = 'Q' cv=blue h = 15 pct; SYMBOL2 f = marker v = 'R' cv=red h = 15 pct; PATTERN1 v=s c=blue;
PATTERN2 v=s c=red; PROC GPLOT data=bev2; PLOT (maenner frauen) * year / overlay area = 2 hminor = 0 vminor = 1 legend frame
; run;quit; |
| |
Für Box-Whisker-Plots sind mehrere Beobachtungen je dargestelltem X-Wert nötig. Sie werden benutzt, um die Verteilung von Werten deutlich zu machen. Die Graphik besteht aus einer Box, bei der das untere Ende dem 1. Quartil entspricht, das obere Ende dem 3. Quartil. Der Median wird durch eine Linie innerhalb der Box angezeigt. Die Whiskers, die maximal 1.5 Quartile lang sind, zeigen die Extremwerte an. Sollten Ausreißer außerhalb dieser Distanz liegen, dann werden sie durch normale Symbole dargestellt.
Optionen für BOX
| f | als Füllfarbe wird "cv=farbe", als Farbe für Umrandung "co=farbe" verwendet |
| j | Mediane der einzelnen Boxes werden durch eine Linie miteinander verbunden, Farbe ist "ci=farbe" |
| t | Anfang und Ende der Whiskers werden durch Querstriche hervorgehoben |
Beispiel 51 - Box-Whisker-Plot
Für dieses Beispiel wird der Dataset SASUSER.FITNESS benutzt. Er enthält Daten für drei Gruppen , die 1.5 Meilen laufen mußten. Dazu wurden verschiedene Variablen erfaßt, Alter, Gewicht, Ruhepuls, Belastungspuls, maximaler Puls und Sauerstoffverbrauch. Hier wird die Verteilung der Laufzeiten dargestellt.
| SYMBOL1 i = boxjft cv = gray ci = blue co = red value = 'X';
PROC GPLOT data = sasuser.fitness; PLOT runtime * group / frame ; run;quit; |
|
Bei diesem Graphiktyp müssen wenigstens drei Beobachtungen je X-Wert vorhanden sein. Dann werden Minimum und Maximum durch eine Linie oder einen Balken miteinander verbunden und der Mittelwert markiert.
Optionen für HILO
| b | Mimimum und Maximum werden mit einem Balken verbunden |
| j | Mittelwerte werden durch eine Linie miteinander verbunden |
| t | Linienenden werden durch Querstriche hervorgehoben |
Diese Optionen werden einfach an "hilo" angehängt.
Die Farbe für die eventuelle Verbindungslinie zwischen den
Mittelwerten wird über "ci=farbe" festgelegt, die
Farbe für die Linie zwischen Minimum und Maximum kann über
"co=farbe" definiert werden.
Beispiel 52 - HILO-Diagramm
| SYMBOL1 i = hilojt ci = green co = blue;
PROC GPLOT data = sasuser.fitness; PLOT runtime * group / frame ; run;quit; |
|
Anders als bei den HILO-Diagrammen, werden hier nicht Minimum und Maximum um den Mittelwert dargestellt, sondern es wird eine vertikale Linie gezeichnet, die vom Mittelwert um den Betrag von ein, zwei oder drei Standardabweichungen wegführt. Wiederum sind einige Optionen möglich, die direkt an den Interpolationsmodus angehängt werden.
Optionen für STD
| 1,2,3 | legt fest, wieviele Standardabweichungen dargestellt werden (default = 2) |
| b | Standardabweichung wird als Balken dargestellt |
| j | Mittelwerte werden durch eine Linie miteinander verbunden |
| t | Linienenden werden durch Querstriche hervorgehoben |
Beispiel 53 - ein Diagramm mit Standardabweichung
| SYMBOL1 i = std1bjt ci = green co = blue value = 'X' cv = black;
PROC GPLOT data = sasuser.fitness; PLOT runtime * group / frame vaxis = 0 to 20 by 2 ; run;quit; |
|
GPLOT kann Regressionen für drei Modelle berechen: linear, quadratisch und kubisch. Zusätzlich können Konfidenzintervalle für die mittleren vorhergesagten oder die individuell vorhergesagten Werte angezeigt werden. Die Genauigkeit der Konfidenzintervalle kann zwischen 50 und 99 Prozent liegen. Die Bezeichnung für den Interpolationsmodus setzt sich aus dem Buchstaben "R" und einer Kombination weiterer Angaben zusammen.
Syntax:
R<type><0><Konfidenzintervall <[50,99]>>
| R | Regression |
| type | Art der Regression:
L linear f(x) = ax + b Q quadratisch f(x) = ax² + bx + c C kubisch f(x) = ax³ + b² + cx + d |
| Konfidenzintervall | CLM KI für mittlere vorhergesagte Werte
CLI KI für individuelle vorhergesagte Werte |
| [50,99] | Breite des Konfidenintervalles |
GPLOT gibt im LOG-Fenster die Regressionsgleichung aus. Mit der
PLOT-Option "regeqn" (Abkürzung für regression
equitation) wird die Regressionsgleichung in die Graphik übernommen.
Beispiel 54 - Regression mit GPLOT
Beispieldatei Bevölkerungsentwicklung in Heidelberg 1970 - 1993:
DATA hd_bev;
INPUT jahr bev @@;
CARDS;
1970 130129 1971 130863 1972 131285 1973 129688 1974 130134
1975 129368 1976 129361 1977 129179 1978 128064 1979 128773
1980 133227 1981 134386 1982 134575 1983 133437 1984 133693
1985 134724 1986 136227 1987 128609 1988 131429 1989 134496
1990 136796 1991 139392 1992 140282 1993 139429
;
| SYMBOL1 i=rqclm95 ci = red co = green cv = black value = circle;
PROC GPLOT data = hd_bev; PLOT bev*jahr / legend hminor=0 regeqn ; run;quit; |
|
GPLOT bietet die Möglichkeit, auf der rechten Diagrammseite eine zusätzliche Y-Achse anzuzeigen, das ist sinnvoll, wenn Daten unterschiedlicher Wertebereiche miteinander verglichen werden sollen.
Zu diesem Zweck wird das PLOT2-Statement verwendet. Natürlich muß die X-Variable gleich sein, auch muß kein "overlay" angegeben werden, sondern die Diagramme, die aus PLOT und PLOT2 resultieren werden automatisch in einer Graphik dargestellt.
Achtung TITLE1 f=zapfbi h=6 pct
'Klimadiagramm Heidelberg
1993';
TITLE2 f=zapf h=5 pct
'Temperatur und Niederschlag';
FOOTNOTE1 f=zapf h=4 pct
'Quelle: Stadt Heidelberg';
FOOTNOTE2 ' ';
!!! Dieses Beispiel greift etwas vor, indem es explizit und intensiv die Layoutoptionen des AXIS-Statements strapziert !!!
Beispiel 55 - zwei Y-Achsen mit PLOT2
Es sollen Temperatur- und Niederschlagsverlauf in Heidelberg für das Jahr 1993 dargestellt werden. Die linke Y-Achse soll die Temperatur anzeigen, die rechte Y-Achse den Niederschlag, wobei 10 °C mit 20mm Niederschlag gleichgesetzt werden sollen.
Zunächst einmal müssen die Daten eingelesen werden, ein Format sorgt für die korrekte Beschriftung der Monate.
PROC FORMAT;
value m
1 = 'J' 2 = 'F' 3 = 'M' 4 = 'A' 5 = 'M' 6 = 'J'
7 = 'J' 8 = 'A' 9 = 'S' 10= 'O' 11= 'N' 12= 'D'
other = 'Fehler!'
;
DATA klima;
INPUT monat t:commax5.1 n @@;
LABEL monat = 'Monat'
t = 'mittlere Temperatur'
n = 'Niederschlag (mm)'
;
FORMAT monat m.;
CARDS;
1 3,5 35 2 0,4 14 3 9,3 42 4 9,6 17 5 11,9 19 6 16,0 79
7 22,4 31 8 21,7 10 9 17,7 42 10 10,3 21 11 5,4 92 12 1,6 54
run;
| TITLE1 f=zapfbi h=6 pct
'Klimadiagramm Heidelberg 1993'; TITLE2 f=zapf h=5 pct 'Temperatur und Niederschlag'; FOOTNOTE1 f=zapf h=4 pct 'Quelle: Stadt Heidelberg'; FOOTNOTE2 ' '; | Beschriftung der Graphik |
| SYMBOL1 c=red i=spline width=2;
SYMBOL2 c=blue i=join width=2; | Symbol1 wird für die Darstellung der Temperatur, Symbol2 für die Darstellung des Niederschlages verwendet |
| AXIS1
label = (j=l 'T') value = (c=red) order = -5 to 50 by 5 minor = none ; | linke Y-Achse:
die Achse hat einen Wertebereich von -5 bis 50 und wird in fünfer-Schritten beschriftet; die Schriftfarbe für die Werte ist rot, minor tickmarks werden nicht dargestellt |
| AXIS2
label = (j=l c=black 'N') value = (c=blue t=1 '') order = -10 to 100 by 10 minor = none ; | rechte Y-Achse:
die Achse hat einen Wertebereich von -10 bis 100; da negative Niederschläge eher selten sind, wird in der value-Option die Beschriftung der ersten tickmark unterdrückt: "value = (t=1 '')" die Schriftfarbe für die Werte ist blau, minor tickmarks werden nicht dargestellt |
| AXIS3
label = none length = 80 pct ; | X-Achse:
Der Achsentitel wird unterdrückt; die Achse ist 80% breit |
| PROC GPLOT data = klima;
PLOT t * monat / vaxis = axis1 haxis = axis3 vref = 0 to 50 by 10 ; | Graphikprozedur:
PLOT-Anweisung - Temperatur * Monat Zuordnung der Achsenstatements - Y-Achse = axis1, X-Achse = axis3; Referenzlinien von 0 bis 50 im Abstand von 10 Einheiten |
| PLOT2 n * monat /
vaxis = axis2 ; | PLOT2-Anweisung - Niederschlag * Monat
Zuordnung des Achsenstatements - rechte Y-Achse = axis2 |
| run;quit; | Anforderung der Graphik und Beendung der Prozedur |
Variablenlabel werden als Beschriftung von Achsen verwendet, in GPLOT werden die Variablenlabel auch zur Beschriftung Legende herangezogen. Im Normalfall werden die Label des Datenschritts benutzt, wurden dort keine vergeben, wird stattdessen der Variablenname herangezogen.In den Graphikprozeduren können die Original-Label überschrieben werden, indem zwischen Prozedurstatement und "run;" ein LABEL-Statement eingefügt wird.
Syntax:
LABEL var_name = 'Label' <nvar_name = 'Label' ...>;
Es ist allerdings nicht möglich, durch Angabe eines leeren Strings eine Achsenüberschrift zu unterdrücken, weil SAS/GRAPH dann automatisch den Variablennamen für die Beschriftung benutzt. Achsenüberschriften können nur mit Hilfe eines AXIS-Statements verhindert werden, indem dort die Option "label=" auf "none" gesetzt wird (s.u.).
Formate werden ebenfalls automatisch benutzt, um die Achsenabschnitte zu beschriften. SAS bietet eine Fülle von Zahlen-Formaten, aber auch eine Reihe von Formaten für die korrekte Darstellung von Datums-Variablen, Zip-Codes der amerikanischen Bundesstaaten etc. Eigene Formate können mit der Prozedur FORMAT erstellt und dauerhaft abgespeichert werden.
Formate können aber auch benutzt werden, um Variablen zu klassifizieren.
Für Formatzuordnungen gilt das gleiche wie für Labels, auch hier kann in der Graphikprozedur jeder Variablen ein Format zugeordnet werden. Das Originalformat, das im Dataset zugeordnet ist, wird davon nicht betroffen.
Syntax:
FORMAT var_name <var_name> format.;
Die Standardsyntax von AXIS-Statements lautet:
AXISn optionen;
Natürlich verbirgt sich hinter "optionen" ein Sammelsurium an Layoutmöglichkeiten die hier thematisch gegliedert und vorgestellt werden. Achsen-Optionen können sich beziehen auf:
| LABEL = none | (Layoutanweisungen <'text'...>) |
enthält Layoutanweisungen und einen Text |
| VALUE = none |(Layoutanweisungen <'text' Layoutanweisungen 'text'...>) |
Die Beschriftung der major tickmarks funktioniert ähnlich wie bei Titeln, Umbrüche sind möglich; erlaubte Layoutanweisungen sind: angle | a = [0,360] color | c = farbe font | f = schriftart height | h = schriftgröße justify | j = ausrichtung rotate | r = [0,360] tick | t = n Um die Einstellungen einer spezifischen Tickmark zu ändern, kann diese mit "t=n" explizit angewählt werden |
| ORDER = liste | intervall | gibt die Reihenfolge der Darstellung an; Ausprägungen für alphanumerische Variablen werden in Anführungszeichen gesetzt, z.B.:
order = 'CDU' 'SPD' 'GRUENE' 'FDP' 'PDS' 'DVU' 'Andere' für numerische Variablen können Listen oder Intervalle verwendet werden: order = 10 20 30 40 50 bzw. order = 10 to 50 by 10 Weil die hier aufgeführten Items gleich den beschrifteten Achsenabschnitten sind, wird hier automatisch auch die Anzahl der major tickmarks festgelegt |
| origin = (x,y) <unit> | Ursprung der Achse; mit diesen Koordinaten kann die Achse frei plaziert werden; natürlich sollten X- und Y-Achsen den gleichen Ursprung verwenden; außerdem muß darauf geachtet werden, daß eine eventuell ebenfalls angegebene Länge darstellbar ist |
| length = wert <unit> | Länge der Achse |
| offset = (x,y) <unit> | Abstand zwischen der eigentlichen Achsenlinie und dem Beginn des Datenbereiches; bei GCHART ist offset normalerweise auf 0 gesetzt, bei GPLOT dagegen ist ein kleiner offset eingestellt |
| style = [1,46 | Linienart für die Achse |
| width = n | Breite der Linie |
| color = farbe | Farbe |
| major = none | (optionen) | unterdrückt die Anzeige der major tickmarks, bzw. gibt genauere Layoutoptionen an |
| minor = none | (optionen) | unterdrückt die Anzeige der minor tickmarks, bzw. gibt genauere Layoutoptionen an |
Optionen für Tickmarks
| color | c = farbe | Farbe |
| height | h = wert | Länge (negativ -> tickmarks zeigen ins Graphikinnere) |
| width | w = wert | Breite |
| number = n | Anzahl |
| nobrackets | unterdrückt Klammer von Gruppenachsen |
| color | c = farbe | Farbe die für die Achse und alle Beschriftungselemente verwendet wird, wenn nicht eine spezifischere Farbdefinition erfolgt |
Legenden werden bei fast allen Graphiktypen verwendet. In Balken-, Kreis- und Donutdiagrammen erläutern sie die Untergruppen (subgroup = varname). Bei Linien- und Flächendiagrammen klären sie die Zuordnung der einzelnen Variablen, bei Karten werden die Ausprägungen einer Variablen erklärt.
LEGEND-Statements setzten sich aus drei Komponenten zusammen:
| label = NONE | (Layoutanweisungen 'text') | Mit der Angabe von NONE wird die Legendenüberschrift unterdrückt.
Layoutanweisungen können sein: color | c = farbe Schriftfarbe font | f = font Schriftart height | h = höhe Texthöhe justify | j = l | r | c Textausrichtung (links, rechts, zentriert) und andere |
| value = NONE | (Layoutanweisungen 'text' ... Layoutanweisungen 'text-n') | Value kann auf zwei Arten verwendet werden. Es können z.B. nur Layoutanweisungen angegeben werden. Dann werden die Werte entsprechend formatiert. Es können aber auch explizit Textstrings angegeben werden, die dann als Legenden-Items erscheinen. |
| across = n | gibt an, wieviele Legendenitems nebeneinander dargestellt werden sollen |
| down = n | gibt an, wieviele Legendenitems untereinander dargestellt werden sollen |
| mode = reserve | share | protect | SAS reserviert einen Bereich, in den nur die Legende gezeichnet wird, d.h. der Graphikbereich wird verkleinert. Wenn es keine Konflikte mit der Legende gibt, kann sie auch in die Graphik selbst hinein positioniert werden.
reserve Bereich für Legende kann Graphik nicht überlappen share Überlappung, Legende liegt hinter Graphik protect Legende wird vor Graphik gezeichnet |
| offset = (x, y) <unit> | (x <unit>, y <unit>) | Hiermit kann Legende genau ausgerichtet werden, wenn sie zuvor mit "position =" positioniert wurde. Positive Werte für X verlagern die Legende nach recht, negative Werte nach links, positive Werte für Y verlagern die Legende nach oben, negative nach unten. Einheit kann CELLS, CM, IN und PCT sein. |
| Origin = (x, y) <unit> | (x <unit>, y <unit>) | Definiert die linke untere Ecke der Legende absolut. Wenn der Ursprung zu weit rechts liegt, kann es vorkommen, daß die Legende nicht mehr in die Graphik paßt. |
| Position = (<bereich> <vertikal> <horizontal>) | Relative Positionierung der Legende.
Bereich bezieht sich auf den Graphikbereich
inside Legende wird innerhalb des Graphikbereiches outside Legende wird außerhalb des Graphikbereiches gezeichnet Vertikal ist die Positionierung der Legende in Y-Richtung: bottom unten middle in der Mitte top oben Horizontal ist die Positionierung der Legende inX-Richtung left links center zentriert right rechts |
| cborder = color | legt eine Farbe für den Rahmen um die Legende fest |
| cframe = color | legt die Hintergrundfarbe des Legendenbereiches fest |
| cshadow = color | legt die Farbe für den Schatteneffekt fest |
| frame | fordert einen Rahmen um die Legende |
| shape = bar(width,height)<unit> | line(length)<unit> |
symbol(width,height)<unit> | beeinflußt die Gestaltung der einzelnen Legendenitems
BAR wird für Flächen verwendet (GCHART, GMAP, GPLOT), Defaultwerte sind width = 5 und height = 0.8. LINE wird für Liniendiagramme verwendet (GPLOT), Defaultwert ist length = 5. SYMBOL wird für Scatterplots verwendet, Defaultwerte sind width = 5 und height = 1 |