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.
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.
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;
12
RUN;
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!
%macro procanno(data=, template=, anno=anno, document=mydoc);
proc document name=&document;
ods exclude properties;
ods output properties=__p(where=(type='Graph'));
list / levels=all;
quit;
data _null_;
set __p;
call execute("proc document name=&document;");
call execute("ods exclude dynamics;");
call execute("ods output dynamics=__outdynam;");
call execute(catx(' ', "obdynam", path, ';'));
run;
proc template;
source &template/ file='temp.tmp';
quit;
data _null_;
infile 'temp.tmp';
input;
if _n_ = 1 then call execute('proc template;');
call execute(_infile_);
if _infile_ =: ' BeginGraph' then bg + 1;
if bg and index(_infile_, ';') then do;
bg = 0;
call execute('annotate;');
end;
run;
data _null_;
set __outdynam(where=(label1 ne '___NOBS___')) end=eof;
if nmiss(nvalue1) and cvalue1 = '.' then cvalue1 = ' ';
if _n_ = 1 then do;
call execute("proc sgrender data=&data sganno=&anno");
call execute("template=&template;");
call execute('dynamic');
end;
if cvalue1 ne ' ' then
call execute(catx(' ', label1, '=',
ifc(n(nvalue1), cvalue1, quote(trim(cvalue1)))));
if eof then call execute('; run;');
run;
proc template;
delete &template;
quit;
%mend;
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.
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.
« 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. »
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.