Una mejor macro de diagrama de dispersión 3D

Una mejor macro de diagrama de dispersión 3D


Los procedimientos SAS SG no admiten la creación de un diagrama de dispersión 3D, pero SAS proporciona un mecanismo para crear cualquier diagrama 3D complejo utilizando los procedimientos SG existentes. En los artículos «A 3D Scatter Plot Macro» y A 3D Scatter Plot Animation Macro de Sanjay Matange, se proporcionó una macro SAS para crear una dispersión 3D para visualizar datos 3D. La tecnología clave es usar la proyección ORTHGRAPHIC para mapear datos 3D en un cubo unitario y representar datos en un plano 2D usando el método SGPLOT. Requiere un entorno SAS 94M1+ para ejecutar el código.

Este artículo contiene una macro reescrita mejorada llamada %SG3D para visualizar fácilmente datos 3D en SAS. Actualmente, solo proporciona funciones como la instrucción SCATTER de PROC G3D, pero no es compatible con las funciones de instrucción PLOT. La macro %SG3D proporciona muchos argumentos para el control de datos y apariencia, lo que permite al usuario personalizar la apariencia y los elementos gráficos a voluntad. La parte extendida contiene las siguientes funciones de visualización:

  1. Proporcione 11 parámetros de datos junto con un pasado de Attrmap personalizable para conducir estilos.
  2. Admite el parámetro opcional GRUPO, TAMAÑO, llama a la declaración BUBBLE en lugar de la declaración SCATTER una vez que se proporciona el parámetro SIZE.
  3. Proporcione parámetros de ángulo de visión de inclinación, balanceo (panorámica) y control de ángulo de balanceo.
  4. Proporcione 27 parámetros de visualización para controlar la apariencia de la salida, incluidos PARED, EJES Y ÁREA, CUADRÍCULA, SOMBRA (PUNTOS/AGUJAS), MARCADORES y LEYENDA.
  5. Gire automáticamente las etiquetas de eje y las etiquetas de rango en los ejes X, Y y Z.
  6. Cree automáticamente WALL y datos ráster para un conjunto de datos específico.
  7. El parámetro INITDATA se puede usar para evitar la inicialización repetida de datos para múltiples llamadas de generación de animación.
  8. Agregue un control de espaciado para asegurarse de que todos los elementos estén visibles sin recortes.
  9. Corrige el error de cálculo MIN/MAX en la normalización de datos
  10. Arreglar que las lineas del eje frontal han sido tapadas por la burbuja

Un usuario de SAS puede invocar el siguiente código para generar una dispersión 3D simple basada en HOJA.CLASE Registro:

%include 'SG3D_Macro.sas';
 
options nomautosource nomprint nomlogic ;  
 
%let gpath="%sysfunc(getoption(work))";
%let dpi=400; 
 
ods html close;
ods listing gpath=&gpath image_dpi=&dpi;
 
ods graphics / reset attrpriority=color width=4in height=3in imagename="Class" noborder;
 
/*--A simple 3D scatter--*/
%SG3D (Data=sashelp.class, X=height, Y=Age, Z=Weight ); 
 
/*--A simple 3D scatter with GROUP variable specified --*/
%SG3D (Data=sashelp.class, X=height, Y=Age, Z=Weight, Group=Sex); 
 
/*--A simple 3D scatter with GROUP and SIZE variable specified --*/
%SG3D (Data=sashelp.class, X=height, Y=Age, Z=Weight, Group=Sex, size=Weight); 
 
/*--A simple 3D scatter with GROUP and SIZE variable specified, along with FloorNeedles --*/
%SG3D (Data=sashelp.class, X=height, Y=Age, Z=Weight, Group=Sex, size=Weight, FloorNeedles=1 );

Los gráficos de salida se muestran a continuación (Figura 1), pero puede personalizar la salida gráfica con los parámetros anteriores que desee.



Figura 1: Dispersión 3D de SAHELP.CLASS

Puede crear una animación basada en el parámetro de rotación de %SG3DPuede consultar la Figura 2: (izquierda) a continuación para ver el resultado:

%macro run_anim_macro(data=sashelp.class, x=height, y=age, z=weight,group=sex, size=Weight, start=, end=, incr=, title=,FloorNeedles=0);
  %do rotate=&start %to &end %by &incr;
    %SG3D (Data=&data,  X=&x, Y=&y, Z=&z, title=&title, Group=&group, Size=&size, Attrmap=attrmap, Tilt=65, Rotate=&rotate, InitData=%eval(&rotate=&start),FloorNeedles=&FloorNeedles);
  %end;
%mend run_anim_macro;
 
options nomautosource nomprint nomlogic;
 
ods html close;
ods listing gpath=&gpath image_dpi=&dpi;
 
/*--Create GIF animation--*/
options papersize=('5 in', '4 in') printerpath=gif animation=start animduration=0.04 animloop=yes noanimoverlay nodate nonumber;
ods printer dpi=100 file='C:TempClass3DScatterAnim.gif';
 
ods listing gpath=&gpath image_dpi=&dpi;
ods graphics / reset attrpriority=color width=5in height=4in imagefmt=GIF noborder /*if lost dataskin*/ DATASKINMAX=1000;
 
%run_anim_macro( start=-30, end=-60, incr=-1);
%run_anim_macro( start=-60, end=-30, incr= 1);
 
options printerpath=gif animation=stop;
ods printer close;



Figura 2: Animación de dispersión 3D de SASHELP.CLASS (izquierda) y SASHELP.IRIS (derecha)

En consecuencia, puede usar cualquier dato 3D para crear animaciones de dispersión 3D, p. FAJA. IRIS Registro. Que longitud del pétalo, ancho de pétalo y longitud del cáliz Las variables se asignan a X, Y, Z y se usan especies como una variable de GRUPO y ancho del cáliz como la variable entonces TAMAÑO. Puede verificar la salida en la Figura 2: (derecha) arriba.

options nomautosource nomprint nomlogic;
ods html close;
 
ods listing gpath=&gpath image_dpi=&dpi;
 
/*--Create GIF animation--*/
options papersize=('5 in', '4 in') printerpath=gif animation=start animduration=0.04 animloop=yes noanimoverlay nodate nonumber;
ods printer dpi=100 file='C:TempIris3DScatterAnim.gif';
 
ods listing gpath=&gpath image_dpi=&dpi;
ods graphics / reset attrpriority=color width=5in height=4in imagefmt=GIF noborder /*if lost dataskin*/ DATASKINMAX=1000;
 
%run_anim_macro(data=sashelp.iris, x=PetalLength,y =PetalWidth, z=SepalLength, size=SepalWidth, group=Species, start=-30, end=-60, incr=-1,FloorNeedles=1);
%run_anim_macro(data=sashelp.iris, x=PetalLength,y =PetalWidth, z=SepalLength, size=SepalWidth, group=Species, start=-60, end=-30, incr= 1,FloorNeedles=1);
 
options printerpath=gif animation=stop;
ods printer close;

De hecho, SAS SGPLOT ya proporciona los elementos gráficos necesarios para visualizaciones complejas. Los datos tridimensionales o de alta dimensión se pueden visualizar fácilmente después de proyectarlos adecuadamente. Con el fuerte soporte de SAS para las capacidades de animación, los usuarios de SAS pueden crear rápidamente visualizaciones complicadas en 3D o de alta dimensión. La animación para el problema de los tres cuerpos del artículo «Consideraciones para la generación de animación con precisión de tiempo con SAS» también se generó utilizando el método SAS SGPLOT.

Macro de dispersión 3D: SG3D_Macro

Related post

Impresionantes gráficos alimentan una secuela inmersiva

Impresionantes gráficos alimentan una secuela inmersiva

Si Red Matter estableció un nuevo punto de referencia para gráficos en hardware de realidad virtual independiente, entonces Red Matter 2…
Proporciona una protección contra la corrosión superior y avanzada.

Proporciona una protección contra la corrosión superior y avanzada.

Un artículo publicado en la revista Cerámica internacional informó sobre el desarrollo de un recubrimiento orgánico-inorgánico hecho de polidimetilsiloxano (PDMS) en…
El Departamento de Energía de EE. UU. encuentra una producción récord y un crecimiento del empleo en el sector de la energía eólica de EE. UU.

El Departamento de Energía de EE. UU. encuentra una…

Los nuevos informes del mercado de energía eólica del DOE destacan los avances en el desarrollo y despliegue doméstico y ahora…

Leave a Reply

Tu dirección de correo electrónico no será publicada.