Publicado el :
Informes CREACION_INTERNA

Superposición de dos superficies 3D con PROC G3D y GREPLAY

Este código también está disponible en: Deutsch English Français
En espera de validación
Este script ilustra una técnica avanzada de SAS©/Graph. Comienza creando un conjunto de datos brutos (`raw_data`) a través de un paso DATA con datos incrustados (datalines). Luego, utiliza PROC G3GRID para suavizar estos datos y crear una cuadrícula interpolada. Los datos suavizados se modifican luego para simular dos superficies distintas. El script configura el entorno gráfico para una salida HTML y genera dos gráficos 3D separados con PROC G3D, guardándolos en un catálogo de gráficos sin mostrarlos inmediatamente. La particularidad es jugar con el color del texto (blanco y luego negro) para evitar un efecto de desenfoque durante la superposición. Finalmente, se utiliza PROC GREPLAY para combinar estos dos gráficos en una sola imagen, que luego se renderiza en el archivo HTML de salida.
Análisis de datos

Type : CREACION_INTERNA


Los datos iniciales se crean directamente en el script a través de un bloque DATA STEP y la instrucción 'datalines'. Todos los datos siguientes se derivan de esta fuente interna.

1 Bloque de código
DATA STEP Data
Explicación :
Este bloque DATA STEP crea la tabla 'raw_data' que contiene las coordenadas X, Y, Z. Los datos se integran directamente en el código usando la instrucción 'datalines'.
¡Copiado!
1DATA raw_data;
2INPUT X Y Z;
3DATALINES;
4-1.0 -1.0 15.5
5 -.5 -1.0 18.6
6 .0 -1.0 19.6
7 .5 -1.0 18.5
8 1.0 -1.0 15.8
9-1.0 -.5 10.9
10 -.5 -.5 14.8
11 .0 -.5 16.5
12 .5 -.5 14.9
13 1.0 -.5 10.9
14-1.0 .0 9.6
15 -.5 .0 14.0
16 .0 .0 15.7
17 .5 .0 13.9
18 1.0 .0 9.5
19-1.0 .5 11.2
20 -.5 .5 14.8
21 .0 .5 16.5
22 .5 .5 14.9
23 1.0 .5 11.1
24-1.0 1.0 15.8
25 -.5 1.0 18.6
26 .0 1.0 19.5
27 .5 1.0 18.5
28 1.0 1.0 15.8
29;
30RUN;
2 Bloque de código
PROC G3GRID Data
Explicación :
El procedimiento G3GRID se usa para la interpolación. Toma los datos brutos ('raw_data') y genera una nueva tabla 'smoothed' con una cuadrícula de puntos más fina. La opción 'spline' con 'smooth=.05' aplica un suavizado por spline cúbico para obtener una superficie regular.
¡Copiado!
1PROC G3GRID DATA=raw_data out=smoothed;
2grid y*x=z / spline smooth=.05
3 axis1=-1 to 1 BY .1
4 axis2=-1 to 1 BY .1;
5RUN;
3 Bloque de código
DATA STEP Data
Explicación :
Este DATA STEP modifica la tabla 'smoothed' para simular dos superficies distintas. Crea dos nuevas variables 'z1' y 'z2' desplazando el valor original de 'z' en -8 y +8 respectivamente.
¡Copiado!
1DATA smoothed; SET smoothed;
2label z1='Z' z2='Z';
3z1=z-8;
4z2=z+8;
5RUN;
4 Bloque de código
ODS / GOPTIONS
Explicación :
Este bloque configura el entorno de salida. 'goptions' define los parámetros de los gráficos (dispositivo, tamaño). ODS (Output Delivery System) se configura para cerrar la salida de listado estándar y redirigir la salida a un archivo HTML. La opción 'nodisplay' impide la visualización inmediata de los gráficos.
¡Copiado!
1%let name=example06;
2filename odsout '.';
3 
4goptions device=png;
5goptions xpixels=600 ypixels=600;
6goptions noborder;
7
8ODS LISTING CLOSE;
9ODS HTML path=odsout body="&name..htm" (title="SAS/Graph g3d plots") style=minimal;
10 
11goptions gunit=pct htitle=4.0 htext=2.5 ftitle="albany amt/bo" ftext="albany amt";
12goptions nodisplay;
5 Bloque de código
PROC G3D
Explicación :
El procedimiento G3D genera el primer gráfico 3D basado en la variable 'z1'. 'name="plot1"' guarda el gráfico en el catálogo de trabajo para su uso posterior. El texto se define en blanco para preparar la superposición y evitar artefactos visuales.
¡Copiado!
1goptions ctext=white;
2 
3title ls=1.5 "Overlay Multiple G3D Surfaces, using Greplay";
4PROC G3D DATA=smoothed;
5 plot y*x=z1 /
6 grid zmin=0 zmax=30 xticknum=4 tilt=80
7 ctop=purple cbottom=cx00ff00 des='' name="plot1";
8RUN;
6 Bloque de código
PROC G3D
Explicación :
El procedimiento G3D genera el segundo gráfico 3D basado en la variable 'z2', usando los mismos parámetros de ejes y ángulo que el primero para garantizar una alineación perfecta. El gráfico se guarda con el nombre 'plot2' y el texto se define en negro.
¡Copiado!
1goptions ctext=black;
2 
3PROC G3D DATA=smoothed;
4 plot y*x=z2 /
5 grid zmin=0 zmax=30 xticknum=4 tilt=80
6 ctop=blue cbottom=red des='' name="plot2";
7RUN;
7 Bloque de código
PROC GREPLAY
Explicación :
La opción 'goptions display' se reactiva. El procedimiento GREPLAY superpone los dos gráficos ('plot1' y 'plot2') en una misma área definida por el modelo 'WHOLE'. La instrucción 'treplay' ejecuta esta superposición, creando el gráfico compuesto final.
¡Copiado!
1goptions display;
2 
3PROC GREPLAY tc=tempcat nofs igout=work.gseg;
4tdef WHOLE des="my template"
5 1/llx=0 lly=0
6 ulx=0 uly=100
7 urx=100 ury=100
8 lrx=100 lry=0
9 ;
10template = whole;
11treplay 1:plot1 1:plot2 des='' name="&name";
12RUN;
13QUIT;
8 Bloque de código
ODS
Explicación :
Este bloque finaliza el proceso cerrando el archivo de salida HTML y reactivando el destino ODS LISTING por defecto.
¡Copiado!
1ODS HTML CLOSE;
2ODS 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.