Veröffentlicht am :
Macro MIXTE

Annotation von analytischen Grafiken nach der Generierung

Dieser Code ist auch verfügbar auf: English Français
Wartet auf Validierung
Dieses Skript verwendet ein %procanno-Makro, um eine vorhandene Grafik, die in einem ODS-Dokument gespeichert ist, zu ändern. Es extrahiert zuerst die Daten, die Grafikvorlage (Template) und die dynamischen Variablen aus der Originalgrafik. Anschließend ändert es die Vorlage dynamisch, um eine Annotationsanweisung aufzunehmen. Schließlich verwendet es PROC SGRENDER, um die Grafik mit den Originaldaten, der geänderten Vorlage und einem überlagerten Annotationsdatensatz neu zu zeichnen, wodurch ein Wasserzeichen und ein Datum hinzugefügt werden können.
Datenanalyse

Type : MIXTE


Das Skript verwendet die Tabelle SASHELP.CLASS für die anfängliche Regression. Es erstellt dann intern einen Annotationsdatensatz (anno) und einen Datensatz (dp), indem es die grafische Ausgabe von PROC REG erfasst.

1 Codeblock
PROC REG Data
Erklärung :
Führt eine einfache lineare Regression auf sashelp.class aus. Die ODS-Ausgabe wird erfasst: Das Diagnosepanel wird in einem SAS-Datensatz namens 'dp' gespeichert, und das vollständige Grafobjekt wird für die spätere Verarbeitung in einem ODS-Dokument namens 'MyDoc' abgelegt.
Kopiert!
1ods graphics on;
2ods document name=MyDoc (write);
3PROC REG DATA=sashelp.class;
4 ods select diagnosticspanel;
5 ods OUTPUT diagnosticspanel=dp;
6 model weight = height;
7QUIT;
8ods document close;
2 Codeblock
DATA STEP Data
Erklärung :
Erstellt einen Annotationsdatensatz ('anno'), der zwei Textelemente definiert, die einer Grafik überlagert werden sollen: ein rotes Datum in der oberen rechten Ecke und ein diagonales Wasserzeichen 'Confidential' mit hoher Transparenz.
Kopiert!
1DATA anno;
2 LENGTH Label $ 40;
3 Function = 'Text'; Label = 'Saturday, July 25, 2015';
4 Width = 100; x1 = 99; y1 = .1;
5 Anchor = 'Right'; TextColor = 'Red';
6 OUTPUT;
7
8 Label = 'Confidential - Do Not Distribute';
9 Width = 150; x1 = 50; y1 = 50; Anchor = 'Center';
10 Transparency = 0.8; TextSize = 40; Rotate = -45;
11 OUTPUT;
12RUN;
3 Codeblock
MACRO
Erklärung :
Definiert ein '%procanno'-Makro. Es nimmt einen Datensatz, einen Vorlagennamen, einen Annotationsdatensatz und ein ODS-Dokument als Parameter entgegen. Seine Aufgabe ist es, die Komponenten einer vorhandenen Grafik (Daten, Vorlage, dynamische Variablen) zu extrahieren, ihre Vorlage zu ändern, um eine Annotationsebene einzufügen, und sie dann mit PROC SGRENDER unter Anwendung der Annotationen neu zu generieren.
Kopiert!
1%macro procanno(DATA=, template=, anno=anno, document=mydoc);
2 PROC DOCUMENT name=&document;
3 ods exclude properties;
4 ods OUTPUT properties=__p(where=(type='Graph'));
5 list / levels=all;
6 QUIT;
7 
8 DATA _null_;
9 SET __p;
10 call execute("proc document name=&document;");
11 call execute("ods exclude dynamics;");
12 call execute("ods output dynamics=__outdynam;");
13 call execute(catx(' ', "obdynam", path, ';'));
14 RUN;
15 
16 PROC TEMPLATE;
17 SOURCE &template/ file='temp.tmp';
18 QUIT;
19 
20 DATA _null_;
21 INFILE 'temp.tmp';
22 INPUT;
23 IF _n_ = 1 THEN call execute('proc template;');
24 call execute(_infile_);
25 IF _infile_ =: ' BeginGraph' THEN bg + 1;
26 IF bg and index(_infile_, ';') THEN DO;
27 bg = 0;
28 call execute('annotate;');
29 END;
30 RUN;
31 
32 DATA _null_;
33 SET __outdynam(where=(label1 ne '___NOBS___')) END=eof;
34 IF nmiss(nvalue1) and cvalue1 = '.' THEN cvalue1 = ' ';
35 IF _n_ = 1 THEN DO;
36 call execute("proc sgrender data=&data sganno=&anno");
37 call execute("template=&template;");
38 call execute('dynamic');
39 END;
40 IF cvalue1 ne ' ' THEN
41 call execute(catx(' ', label1, '=',
42 ifc(n(nvalue1), cvalue1, quote(trim(cvalue1)))));
43 IF eof THEN call execute('; run;');
44 RUN;
45 
46 PROC TEMPLATE;
47 delete &template;
48 QUIT;
49%mend;
4 Codeblock
MACRO
Erklärung :
Ruft das '%procanno'-Makro auf, um den Annotationsprozess anzuwenden. Es verwendet den Datensatz 'dp' (der die Grafikdaten enthält) und spezifiziert die Vorlage 'Stat.REG.Graphics.DiagnosticsPanel' als Basis für den Neuaufbau der annotierten Grafik.
Kopiert!
1%procanno(
2DATA=dp, template=Stat.REG.Graphics.DiagnosticsPanel)
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Banner
Expertenrat
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« Diese Technik ist die „Königsdisziplin“ der SAS-Grafikprogrammierung. Sie erlaubt es Ihnen, die Grenzen vordefinierter Prozeduren zu sprengen und SAS als vollautomatisierte Publishing-Engine für statistische Berichte zu nutzen. »