Uso de JSL para agregar líneas de referencia a los gráficos Page ByTengo un script en el que uso Page By para crear un conjunto de gráficos. Quiero agregar diferentes líneas de referencia a cada gráfico, extraídas de una lista.
Actualmente, la única forma en que sé cómo especificar a qué gráficos agregar las líneas de referencia es referirme al gráfico por su índice entero (que parece comenzar en 2) usando ScaleBox. (Avíseme si hay una mejor manera que usar el índice entero). Por ejemplo:
For( i= 1, i<= n, i+=1,
RefLineValue= RefLineList[i];
mygraph << SendToReport(
Dispatch(
{},
"Data",
ScaleBox( i+1 ),
{Add Ref Line( RefLineValue, "Solid", "Black", "", 1 )}
);
)
);Esto casi funciona, pero mi problema es que no sé cómo obtener el índice entero especificado correctamente para la función ScaleBox. La función Page By parece poner los gráficos en algún tipo de orden alfabético, así que pensé que si uso Sort List (RefLineList), el orden de la lista coincidiría con el orden de los gráficos.
Pero el orden no coincide del todo: por ejemplo, si las variables en el rol Paginación son [A50, B50, B100], los gráficos se ordenarán [A50, B50, B100 ] pero la lista creada con Ordenar lista se ordenará [A50, B100 , B50].
¿Hay alguna forma de especificar el gráfico Paginar por nombre en lugar de por índice entero? Y si no, ¿hay alguna forma de ordenar mi lista para que el orden de la lista coincida con el orden del gráfico?
secuencias de comandosRe: Uso de JSL para agregar líneas de referencia a los gráficos Page ByGraph Builder está utilizando una ordenación híbrida.Aquí hay un pequeño script que hará eso para los valores de su lista
refList = {"B100", "A50", "B50"};
For( i = 1, i <= N Items( refList ), i++,
If( Length( refList[i] ) < 4,
refList[i] = Substr( refList[i], 1, 1 ) ||
Substr( "00", Length( refList[i] ) - 1 ) ||
Substr( refList[i], 2 )
);
);
refList = Sort List( refList );
For( i = 1, i <= N Items( refList ), i++,
While( Length( Word( 1, refList[i], "0" ) ) == 1,
refList[i] = Substr( refList[i], 1, 1 ) ||
Substr( refList[i], 3 )
)
);
También sugiero que eche un vistazo a usar un método más simple para establecer sus líneas de referencia.Si va directamente al AxisBox al que desea agregar la línea de referencia, se hace con un código más simple.A continuación se muestra un ejemplo.Además, la Guía de secuencias de comandos tiene una sección completa sobre cómo trabajar con árboles de visualización y el Índice de secuencias de comandos tiene definiciones y ejemplos para todas las funciones.
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
refList = {60,65};
gb = dt << Graph Builder(
Size( 528, 956 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ), Page( :sex ) ),
Elements( Points( X, Y, Legend( 8 ) ), Smoother( X, Y, Legend( 9 ) ) )
);
Summarize( dt, groups = by( :Sex ) );
For( i = 1, i <= N Items( groups ), i++,
Report( gb )[axisbox( i * 2 )] << Add Ref Line(
refList[i],
"Solid",
"Black",
"",
1
)
);