Script para configurar todos los límites de eje en un generador de gráficos a valores calculados a partir de los datos mostradosPara acelerar un paso de un flujo de trabajo, estoy tratando de escribir un script que establezca automáticamente los límites de los ejes de todos los ejes Y en un generador de gráficos en ciertos valores (cuantiles) que se pueden calcular a partir de los datos mostrados.
El plan era:
- Obtener las etiquetas de los ejes
- Calcule los límites deseados usando las columnas correspondientes en la tabla de datos
- Establezca los límites en consecuencia.
Esto resulta ser más complicado de lo esperado en primer lugar, porque se puede usar un filtro de datos local, se pueden modificar etiquetas, etc.
Así que preferiría obtener los diferentes valores de Y para cada eje directamente desde el generador de gráficos. ¿Cómo obtener los valores de ejes específicos?
por ejemplo si tengo
R = Current Report();
AB = R[axisbox(2)] ;
ab_min = -100; // How to access the value list containing all the values that are used by default to compute axis limits of AB here?
ab_max = 100;
AB << Min(ab_min);
AB << Max(ab_max);
Al usar "la cruz" terminé con algunos FrameBoxes, pero no pude averiguar cómo obtener valores de ellos.
¿Alguna idea o mejor manera de cómo hacerlo?
Gracias Robbb
Gráficossecuencias de comandosRe: Script para configurar todos los límites de eje en un generador de gráficos a valores calculados a partir de los datos mostradosAlgo como esto funcionaría? Use XPath para obtener todos los ejes y luego descubra cuáles son el eje Y. Después de eso, deberías poder manipularlos.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(570, 1049),
Show Control Panel(0),
Variables(
X(:age),
Y(:height),
Page(:sex)
)
);
axisboxes = Report(gb) << XPath("//AxisBox");
/*y-axis seems to be even numbers*/
yaxis = axisboxes[2::N Items(axisboxes)::2];
ymin = yaxis << get min;
ymax = yaxis << get max;
show(ymin, ymax);
Re: Script para configurar todos los límites de eje en un generador de gráficos a valores calculados a partir de los datos mostradosEl siguiente JSL devolverá una lista de todos los AxisBox() para el informe actual.Tanto AxisBox(1) como AxisBox(2).Entonces, lo que se puede hacer es procesar las entradas, 2, 4, 6, etc. para acceder a todos los AxisBox(2)
r=current report();
yMaxs = ((r[1]<<TOP parent=""></TOP>
Re: Script para configurar todos los límites de eje en un generador de gráficos a valores calculados a partir de los datos mostradosHola @jthi , hola @txnelson
gracias, pero creo que tenemos un pequeño malentendido.
No quiero obtener el mínimo y el máximo actuales de todos los ejes y. Me gustaría obtener todos los valores y correspondientes de los datos mostrados para calcular límites más apropiados.
Por ejemplo, si se muestran 1000 valores para un eje y, me gustaría obtener una lista o un vector de esos 1000 valores y.
Re: Script para configurar todos los límites de eje en un generador de gráficos a valores calculados a partir de los datos mostrados¿Por qué no funcionaría para usted simplemente obtener los valores de la tabla de datos?Si se han excluido filas del análisis, o si se ha aplicado un filtro de datos locales, entonces habría que aplicar esas condiciones.
names default to here(1);
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(570, 1049),
Show Control Panel(0),
Variables(
X(:age),
Y(:height),
Page(:sex)
)
);
allHeights = dt:height << get values;
// or if you want just the unique values of the column height, this
// is my prefered way to get them
uniqueHeights = associative array(dt:height<<GET values=""> </GET>
Re: Script para configurar todos los límites de eje en un generador de gráficos a valores calculados a partir de los datos mostradosActualmente, no veo una forma confiable de obtener la columna o el nombre de la columna que se traza en un eje desde el generador de gráficos. La única forma que se me ocurre es obtener la etiqueta del eje, pero es posible que el usuario la haya modificado para que el texto ya no sea el nombre de la columna. Además, las columnas se pueden transformar/modificar directamente en el generador de gráficos. Si dicha columna se traza en un eje, no podría encontrar esa columna en la tabla de datos. Y sí, si encontrara la columna correcta en la tabla de datos, tendría que aplicar la configuración de filtro del filtro de datos local.
Si pudiera obtener los valores de datos trazados directamente desde el generador de ejes/gráficos de alguna manera, no sería importante qué tipo de columna se traza, qué filtro se aplica, qué etiquetas cambió el usuario y qué más podría salir mal y romper mi secuencia de comandos .
Re: Script para configurar todos los límites de eje en un generador de gráficos a valores calculados a partir de los datos mostradosAlgo como esto debería darte los valores del marcador.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(570, 1049),
Show Control Panel(0),
Variables(
X(:age),
Y(:height),
Page(:sex)
)
);
frame = Report(gb)[FrameBox(1)];
frames = Report(gb) << XPath("//FrameBox");
marker_segs = (frames << Find Seg(Marker Seg(1)));
xm = marker_segs << Get X Values;
ym = marker_segs << Get Y Values;
show(xm, ym);
exportar valores x&y (coordenadas) desde el generador de gráficos una vez que jmp encuentra automáticamente puntos de centroide para un polígono
Cómo obtener información del cuadro de leyenda, como el color y el tipo de marcador