Publicado el :
Informes CREATION_INTERNE

Historial de Consumo Eléctrico con GCHART

Este código también está disponible en: Deutsch English Français
En espera de validación
Este script crea un conjunto de datos de consumo (kWh) a través de DATALINES. Luego prepara etiquetas de eje personalizadas concatenando texto en un paso DATA y almacenándolas en una macro-variable a través de PROC SQL. Finalmente, genera un archivo HTML que contiene un gráfico PROC GCHART con un logo agregado a través de un conjunto de datos de anotación (ANNO).
Análisis de datos

Type : CREATION_INTERNE


Los datos principales se crean manualmente en el paso DATA a través de la instrucción DATALINES.

1 Bloque de código
INITIALISATION
Explicación :
Definición de las macro-variables para el nombre del archivo y la fecha objetivo, y definición del fileref de salida.
¡Copiado!
1%let name=example11;
2filename odsout '.';
3 
4%let targetdate=15sep2003;
2 Bloque de código
DATA STEP Data
Explicación :
Creación del conjunto de datos 'my_data' que contiene las fechas y el consumo de kwh. Creación de un indicador 'billmonth' para la fecha objetivo.
¡Copiado!
1DATA my_data;
2FORMAT kwh comma5.0;
3FORMAT date mmyy5.;
4INPUT date date9. kwh;
5IF date eq "&targetdate"d THEN billmonth=1;
6ELSE billmonth=0;
7DATALINES;
815sep2002 800
915oct2002 550
1015nov2002 200
1115dec2002 190
1215jan2003 250
1315feb2003 200
1415mar2003 225
1515apr2003 190
1615may2003 325
1715jun2003 350
1815jul2003 675
1915aug2003 775
2015sep2003 875
21;
22RUN;
3 Bloque de código
PROC SORT
Explicación :
Ordenación de los datos por fecha cronológica.
¡Copiado!
1PROC SORT DATA=my_data out=my_data;
2BY date;
3RUN;
4 Bloque de código
DATA STEP Data
Explicación :
Construcción iterativa de una cadena de caracteres compleja ('axis_text') para definir etiquetas de eje personalizadas (se muestra un mes de cada dos).
¡Copiado!
1DATA my_data; SET my_data;
2LENGTH axis_text $200;
3retain axis_text;
4IF mod(_n_,2)=1 THEN
5 axis_text=trim(left(axis_text))||' t='||trim(left(_n_))||' '||quote(put(date,monname3.));
6ELSE
7 axis_text=trim(left(axis_text))||' t='||trim(left(_n_))||' '||quote(' ');
8RUN;
5 Bloque de código
PROC SQL
Explicación :
Extracción de la cadena de etiquetas completa construida anteriormente en una macro-variable: axis_text.
¡Copiado!
1 
2PROC SQL;
3select axis_text into :axis_text from my_data having date=max(date);
4QUIT;
5 
6RUN;
7 
6 Bloque de código
DATA STEP Data
Explicación :
Creación de un conjunto de datos de anotación SAS/GRAPH para insertar una imagen de logo ('power_logo.png') en el gráfico.
¡Copiado!
1DATA logo_anno;
2 LENGTH function $8;
3 xsys='3'; ysys='3'; when='a';
4 function='move'; x=0; y=92; OUTPUT;
5 function='image'; x=x+36.4; y=y+7; imgpath='power_logo.png'; style='fit'; OUTPUT;
6RUN;
7 Bloque de código
PROC GCHART
Explicación :
Configuración de las opciones gráficas (GOPTIONS), apertura del destino ODS HTML y generación de un histograma vertical (VBAR) con los datos, las anotaciones de logo y los ejes personalizados.
¡Copiado!
1GOPTIONS DEVICE=png;
2goptions xpixels=480 ypixels=384;
3goptions border;
4
5ODS LISTING CLOSE;
6ODS HTML path=odsout body="&name..htm" (title="Power Bill") style=minimal;
7
8goptions gunit=pct htitle=6 ftitle="albany amt/bold" htext=4.5 ftext="albany amt/bold";
9 
10title1 h=8 " ";
11/* ... titres ... */
12title6 j=c h=6 "kWh Usage History";
13 
14axis1 label=none offset=(5,5) value=( &axis_text );
15axis2 label=none minor=none major=(number=5);
16 
17pattern1 v=x1 c=graybb;
18pattern2 v=x2 c=black;
19 
20PROC GCHART DATA=my_data anno=logo_anno;
21vbar date / discrete type=sum sumvar=kwh
22 subgroup=billmonth nolegend
23 maxis=axis1 raxis=axis2 noframe
24 width=5 space=2.25 coutline=black
25 autoref cref=graydd clipref
26 des="" name="&name";
27RUN;
28 
29QUIT;
30ODS HTML CLOSE;
31ODS LISTING;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.