7 Die Prozedur GPLOT

7.1 Die Syntax von GPLOT

7.2 Variablentypen, Datenstrukturen & GPLOT

7.3 Die Layoutoptionen von GPLOT

7.3.1 Überlagerung

7.3.2 Achsenlayout

7.3.2.1 Allgemeine Optionen

7.3.2.2 Horizontale Achse

7.3.2.3 Vertikale Achse(n)

7.3.3 Rahmen & Referenzlinien

7.3.3.1 horizontale Referenzlinien

7.3.3.2 vertikale Referenzlinien

7.4 Das SYMBOL-Statement

7.4.1 Mögliche Arten der Interpolation

7.4.2 Optionen für die Zuordnung von Farben

7.4.3 Optionen für die Darstellung von Linien

7.4.4 Optionen für die Darstellung von Symbolen

7.5 Die Diagrammtypen von GPLOT

7.5.1 Liniendiagramme mit GPLOT

7.5.2 Flächendiagramme mit GPLOT

7.5.3 Nadel-Diagramme

7.5.4 Treppen-Diagramme

7.5.5 Scatter-Plots

7.5.6 Box-Whisker-Plots

7.5.7 HILO-Plots

7.5.8 Diagramme mit Standardabweichung

7.5.9 Regressionen

7.4.10 Diagramme mit zwei unterschiedlichen Y-Achsen mit PLOT2

8 Die Beschriftung von Achsen und Legenden

8.1 Labels und Formate

8.2 AXIS -Statements

8.2.1 Beschriftung

8.2.2 Position & Größe

8.2.3 Linientyp & Farbe

8.2.4 Tickmarks

8.2.5 Andere Optionen

8.3 Legenden

8.3.1 Beschriftung

8.3.2 Positionierung

8.3.3 Layout-Anweisungen

7 Die Prozedur GPLOT

7.1 Die Syntax von GPLOT

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
UNIFORMalle Graphiken die innerhalb dieses Prozeduraufrufes produziert werden, haben gleichskalierte Achsen
PLOTfordert 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
PLOT2ergä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)

7.2 Variablentypen, Datenstrukturen & GPLOT

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;


7.3 Die Layoutoptionen von GPLOT

7.3.1 Überlagerung

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:

  1. Die Y-Achse ist mit dem LABEL der erstgenannten Variable beschriftet (diese Beschriftung kann nur durch Verweis auf ein AXIS-Statement beseitigt werden, in dem das Label überschrieben wird)
  2. es fehlt eine Legende die erklärt, welche Linie welcher Variablen entspricht
PROC GPLOT data=bev2;

PLOT (maenner frauen) * year /

overlay

;

run;quit;


7.3.2 Achsenlayout

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.

7.3.2.1 Allgemeine Optionen

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
noaxisunterdrückt das Zeichnen von Legenden
ctextFarbe für die Achsenbeschriftung

7.3.2.2 Horizontale Achse

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 | AXISnIntervall für X-Achse oder AXIS-Statement
hminor = nAnzahl der minor tickmarks

7.3.2.3 Vertikale Achse(n)

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 | AXISnIntervall für Y-Achse oder AXIS-Statement
vminor = nAnzahl 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;


7.3.3 Rahmen & Referenzlinien

Die Optionen für Rahmen entsprechen denen von GCHART:
frame fordert einen Rahmen um die Graphik an
cframe = farbeHintergrundfarbe 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.
gridPunktraster 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.

7.3.3.1 horizontale Referenzlinien

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.
autohrefReferenzlinien an alllen major tickmarks
href = listeListe von X-Achsenabschnitten, an denen Referenzlinien gezeichnet werden
chref = farbeFarbe für die Referenzlinien

7.3.3.2 vertikale 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.
autovrefReferenzlinien an allen major tickmarks
vref = listeListe von Y-Achsenabschnitten, an denen Referenzlinien gezeichnet werden
cvref = farbeFarbe 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;


7.4 Das SYMBOL-Statement

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=".

7.4.1 Mögliche Arten der Interpolation

none jeder Wert wird einzeln als Punkt dargestellt
joinPunkte werden durch Linien miteinander verbunden
spline/sm/lunterschiedliche 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
needleJeder Werte wird mit durch eine senkrechte Linie mit der Basis verbunden
stepJeder 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.
boxBox-Whisker-Plot; zeigt die Verteilung der Werte innerhalb jeder Ausprägung der X-Variablen an
hiloniedrigster und höchster Wert jeder Ausprägung der X-Variablen werden durch eine vertikale Linie miteinander verbunden; Mittelwerte werden ebenfalls angezeigt
stdvertikale Linie zeigt die Standardabweichung um den Mittelwert für die jeweilige Ausprägung der X-Variablen an
rDarstellung von Punktwolke und darin integrierter Regressionsgerade; über Optionen können zusätzlich die Konfidenzintervalle angezeigt, und die Regressionsgleichung ausgegeben werden

7.4.2 Optionen für die Zuordnung von Farben

color | c = farbe Farbe für Symbol, Linie und andere Graphikelemente, solange keine spezifischere Definition erfolgt
ci = farbeFarbe für Linien
cv = farbeFarbe für das Symbol (color value)
co = farbeFarbe für eine eventuelle Außenlinie (color outline; Box-Whisker-Plot)

7.4.3 Optionen für die Darstellung von Linien

line | l = [1,46] Linientyp
width = nLinienstärke

7.4.4 Optionen für die Darstellung von Symbolen

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 = nSchriftgröße

7.5 Die Diagrammtypen von GPLOT

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.

7.5.1 Liniendiagramme mit GPLOT

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;

7.5.2 Flächendiagramme mit GPLOT

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;


7.5.3 Nadel-Diagramme

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;


7.5.4 Treppen-Diagramme

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;


7.5.5 Scatter-Plots

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;


7.5.6 Box-Whisker-Plots

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
jMediane der einzelnen Boxes werden durch eine Linie miteinander verbunden, Farbe ist "ci=farbe"
tAnfang 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;


7.5.7 HILO-Plots

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
jMittelwerte werden durch eine Linie miteinander verbunden
tLinienenden 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;

7.5.8 Diagramme mit Standardabweichung

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)
bStandardabweichung wird als Balken dargestellt
jMittelwerte werden durch eine Linie miteinander verbunden
tLinienenden 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;


7.5.9 Regressionen

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
typeArt der Regression:

L linear f(x) = ax + b

Q quadratisch f(x) = ax² + bx + c

C kubisch f(x) = ax³ + b² + cx + d

KonfidenzintervallCLM 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;


7.4.10 Diagramme mit zwei unterschiedlichen Y-Achsen mit PLOT2

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

8 Die Beschriftung von Achsen und Legenden

8.1 Labels und Formate

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.;

8.2 AXIS -Statements

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:

8.2.1 Beschriftung

LABEL = none | (Layoutanweisungen <'text'...>)
  • unterdrückt die Anzeige der Achsenüberschrift
  • enthält Layoutanweisungen für das vorhandene Label

enthält Layoutanweisungen und einen Text

VALUE = none |(Layoutanweisungen <'text' Layoutanweisungen 'text'...>)
  • unterdrückt die Anzeige der Beschriftung der Achsenabschnitte
  • enthält Layoutanweisungen für die automatisch generierte Beschriftung der Achse (Variablenwerte oder Format)
  • enthält Layoutanweisungen und Texte für die einzelnen major tickmarks

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 | intervallgibt 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

8.2.2 Position & Größe

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

8.2.3 Linientyp & Farbe

style = [1,46 Linienart für die Achse
width = nBreite der Linie
color = farbeFarbe

8.2.4 Tickmarks

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 = farbeFarbe
height | h = wertLänge (negativ -> tickmarks zeigen ins Graphikinnere)
width | w = wertBreite
number = nAnzahl

8.2.5 Andere Optionen

nobrackets unterdrückt Klammer von Gruppenachsen
color | c = farbeFarbe die für die Achse und alle Beschriftungselemente verwendet wird, wenn nicht eine spezifischere Farbdefinition erfolgt

8.3 Legenden

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:

8.3.1 Beschriftung

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.

8.3.2 Positionierung

across = n gibt an, wieviele Legendenitems nebeneinander dargestellt werden sollen
down = ngibt 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
gezeichnet (mode muß dann share oder protect sein)

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

8.3.3 Layout-Anweisungen

cborder = color legt eine Farbe für den Rahmen um die Legende fest
cframe = colorlegt die Hintergrundfarbe des Legendenbereiches fest
cshadow = colorlegt die Farbe für den Schatteneffekt fest
framefordert 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