Re: ¿Cómo referenciar cuadros de contorno con el mismo nombre, considerando su jerarquía?Si conoce el orden exacto de los cuadros de contorno, puede utilizar el siguiente
prf = Current Report()["Fit Group",OutlineBox(3)]<<SET title=""></SET>
o
prf = Current Report()["Fit Group","Response A","Prediction Profiler"]<<SET title=""></SET>
Re: ¿Cómo referenciar cuadros de contorno con el mismo nombre, considerando su jerarquía?Su sugerencia funcionaría si quisiera profundizar en el generador de perfiles de respuesta individual, ya que sé que solo hay uno debajo de cada cuadro de esquema de respuesta. Entonces podría incluir en la referencia la ruta exacta hasta el cuadro de esquema de interés.
Sin embargo, específicamente quiero acceder al generador de perfiles de "grupo", que resulta ser el más alto en cuanto a la jerarquía, es decir, directamente debajo del cuadro de esquema "Ajustar grupo", no un nivel más bajo, debajo del cuadro de esquema de respuesta individual.
El problema es que no sé el orden exacto, siempre es diferente.No solo el número de recuadros de respuesta, sino también la presencia de perfiles de respuesta individuales y/u otros recuadros de resúmenes dentro de ellos pueden variar, por lo que no puedo hacer referencia a ellos por número. Desafortunadamente, parece que la sintaxis de referencia no considera la jerarquía sino solo el orden general de aparición.
Y aunque mi generador de perfiles de interés también es el último por orden de aparición, esto tampoco me ayuda mucho ya que no sé su número sin recorrerlos, lo que ya estoy haciendo.
Re: ¿Cómo referenciar cuadros de contorno con el mismo nombre, considerando su jerarquía?Xpath o la indexación deberían funcionar
Names Default To Here(1);
nw = New Window("Report",
Outline Box("Fit Group",
Outline Box( "Response A",
Outline Box("Prediction Profiler")
),
Outline Box( "Response B",
Outline Box("Prediction Profiler")
),
Outline Box( "Response C",
Outline Box("Prediction Profiler")
),
Outline Box( "Prediction Profiler" )
)
);
wait(1);
obs = nw[OutlineBox("Fit Group")] << XPath("//OutlineBox");
Right(obs, 1) << Set Title("This");
wait(1);
nw = New Window("Report",
Outline Box("Fit Group",
Outline Box( "Response A",
Outline Box("Prediction Profiler")
),
Outline Box( "Response B",
Outline Box("Prediction Profiler")
),
Outline Box( "Response C",
Outline Box("Prediction Profiler")
),
Outline Box( "Prediction Profiler" )
)
);
wait(1);
nw["Fit Group",OutlineBox(8)] << Set Title("That");Re: ¿Cómo referenciar cuadros de contorno con el mismo nombre, considerando su jerarquía?Puedes usar XPath() para obtener todo esquemacajas -- luego puede filtrar eso para delinear cuadros que tienen el título "Perfilador de predicción" si quieres.Entonces puedes preguntar a cada uno ContornoCuadro cuál es su padre, y haga coincidir eso con el nivel superior ContornoCuadro "Grupo en forma" .Esto sacará el primero ContornoCuadro con titulo "Perfilador de predicción" que es un hijo directo del EsquemaCuadro( "Grupo de ajuste") .
win = New Window("Report",
Outline Box("Fit Group",
Outline Box( "Response A",
Outline Box("Prediction Profiler")
),
Outline Box( "Response B",
Outline Box("Prediction Profiler")
),
Outline Box( "Response C",
Outline Box("Prediction Profiler")
),
Outline Box( "Prediction Profiler" )
)
);
olb = win[Outline Box( "Fit Group" )]; // top-level OLB of interest
olbs = olb << XPath( "//OutlineBox" ); // ALL child OLBs, regardless of hierarchy
titles = olbs << Get Title; // Get the titles of each OLB
profilers = Loc( titles, "Prediction Profiler" ); // Find the OLB locations in the list with title "Prediction Profiler"
profiler olbs = olbs[profilers]; // Get the list of OLBs with title "Prediction Profiler"
direct child profiler loc = Contains( profiler olbs << Parent, olb ); // Location of OLBs that have the "Fit Group" OLB as the direct parent
profiler = profiler olbs[direct child profiler loc]; // First of the above list
Wait( 2 );
profiler << Set Title( "Gotcha!!" ) // change name to show that the correct OLB is referenced
Re: ¿Cómo referenciar cuadros de contorno con el mismo nombre, considerando su jerarquía?Puede usar el lenguaje XPath para obtener objetos específicos en el árbol XML.
Names Default to Here( 1 );
// set up example
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = dt << Fit Group(
Fit Model(
Y( :height ),
Effects( :age, :sex ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
age( 12, Lock( 0 ), Show( 1 ) ),
sex( "F", Lock( 0 ), Show( 1 ) )
)
),
:height << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Scaled Estimates( 0 ),
Plot Actual by Predicted( 0 ), Plot Regression( 0 ),
Plot Residual by Predicted( 0 ), Plot Studentized Residuals( 0 ),
Plot Effect Leverage( 0 ), Plot Residual by Normal Quantiles( 0 ),
Box Cox Y Transformation( 0 )}
)
),
Fit Model(
Y( :weight ),
Effects( :age, :sex ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
age( 12, Lock( 0 ), Show( 1 ) ),
sex( "F", Lock( 0 ), Show( 1 ) )
)
),
:weight << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Scaled Estimates( 0 ),
Plot Actual by Predicted( 0 ), Plot Regression( 0 ),
Plot Residual by Predicted( 0 ), Plot Studentized Residuals( 0 ),
Plot Effect Leverage( 0 ), Plot Residual by Normal Quantiles( 0 ),
Box Cox Y Transformation( 0 )}
)
),
<<{Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
age( 12, Lock( 0 ), Show( 1 ) ),
sex( "F", Lock( 0 ), Show( 1 ) )
)
)}
);
// start to change title
rpt = obj << Report;
profiler = rpt << XPath( "//OutlineBox[text()='Prediction Profiler']" );
last = N Items( profiler );
profiler[last] << Set Title( "I'm here!" );Re: ¿Cómo hacer referencia a cuadros de esquema con el mismo nombre, considerando su jerarquía?¡Gracias a todos!
Definitivamente mejor que hacer loops.
Re: ¿Cómo hacer referencia a cuadros de esquema con el mismo nombre, considerando su jerarquía?¡Gracias a todos!
Definitivamente mejor que hacer loops.
Re: ¿Cómo referenciar cuadros de contorno con el mismo nombre, considerando su jerarquía?Aquí hay una traducción bastante literal del algoritmo de búsqueda original a xpath que funciona con el ejemplo de Mark.
pp =(rpt << xpath("//OutlineBox[text()='Prediction Profiler'][count(./ancestor::OutlineBox[contains(text(),'Response')])=0]"));
pp << Set Title("I'm here");
Busca desde la parte superior del árbol de visualización un cuadro de contorno con un título de "Generador de perfiles previsto" que también tiene 0 cuadros de contorno arriba que tienen títulos que incluyen la palabra "Respuesta".También vale la pena señalar que en Jmp 17 hay un nuevo control en el panel de propiedades que le dará el subíndice de la ventana o el fragmento xpath para cualquier cuadro de visualización.El fragmento que le brinda no será tan flexible como algunas de las soluciones publicadas aquí, pero será un buen punto de partida.

¿Cómo referenciar cuadros de contorno con el mismo nombre, considerando su jerarquía?Hola,
Leí la documentación y RTFF-ed pero no pude encontrar una solución para lo que creo que es un problema bastante trivial. O tal vez me lo he perdido por completo y es algo completamente obvio.
Digamos que tengo un informe de la siguiente estructura de árbol de cuadros de contorno (en realidad, por ejemplo, un informe de ajuste de mínimos cuadrados con múltiples respuestas con una estructura más compleja con capas adicionales, pero este ejemplo creado manualmente muestra el problema de la misma manera):
New Window("Report",
Outline Box("Fit Group",
Outline Box( "Response A",
Outline Box("Prediction Profiler")
),
Outline Box( "Response B",
Outline Box("Prediction Profiler")
),
Outline Box( "Response C",
Outline Box("Prediction Profiler")
),
Outline Box( "Prediction Profiler" )
)
);Quiero acceder al "grupo" "Prediction Profiler" (el último).
Sin embargo, la referencia a continuación devuelve el primero (Prediction Profiler of Response A), supongo que porque es el primero ya que están numerados en orden de aparición sin tener en cuenta el nivel de jerarquía.
prf = Current Report()[Outline Box("Fit Group")][Outline Box("Prediction Profiler")];
Show( (prf << parent) << get title ) // check the parent - confirmation that it returns the "Response A" profiler Mi solución actual es recorrerlos todos y verificar sus nombres principales. Aquel cuyo nombre principal no comience con "Respuesta" es el correcto. Tengo la sensación de que esto es mucho alboroto para una tarea muy simple.
¿Hay una forma más elegante y directa de hacer referencia?
Gracias
Exploración y visualización de datosventanas