Vi un video en el aire e intenté crear un gráfico de control que incluyera las líneas verticales y los comentarios (anotaciones). Recibí las líneas, pero los comentarios están todos desordenados. Intenté varias cosas pero no tuve éxito. ¿Puede ver el archivo adjunto, el código y hacerme saber cuál es el problema?
@Sebnem ,
Usé tu guión. Hay 2 problemas principales. El gráfico de control de JMP usa la secuencia para el eje X y TestDate se usa para definir las etiquetas. Entonces, la posición x de su etiqueta debe ser Fila () - 1, igual que la línea vertical. Comenté Justificado a la derecha y usé menos 0,75 para que la etiqueta esté justo a la derecha de la línea vertical. Elimine el comentario de Justificado a la derecha y conviértalo en Fila () - 1 para que las etiquetas aparezcan a la izquierda de la línea vertical.
El segundo error es la posición y. Su factor de multiplicación de 1,2 * Col Máximo (: Promedio) es> 1500. Agregué un valor ficticio, es posible que desee considerar Col Max (: Avg) +0.10 * Col Std Dev (: Avg).
Entonces tus problemas fueron xey pos. Este es un método sencillo para agregar comentarios utilizando información de columna. Sin embargo, esto es solo como registro como la mesa está abierta.
Digamos que registra el gráfico resultante, cierra la tabla de datos y el informe del gráfico de control y realiza cualquier actualización como cambiar el ancho de línea de los límites de control. tanto las líneas como los comentarios desaparecen. O si guarda el diario y lo envía a otro o lo abre en una nueva sesión, nuevamente las etiquetas y líneas desaparecen.
Para mantener esas líneas y texto, se deben usar los valores, no las referencias a la tabla de datos. Agregaré un segundo script que usa valores y referencias. Pero esto debería mostrar qué salió mal con su guión.
Control Chart(
Sample Label( :TestDate ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Avg, Individual Measurement ),
SendToReport(
Dispatch(
{"Individual Measurement of Avg"},
"IR Chart of IM",
FrameBox,
{Add Graphics Script( 2, Description( "Script" ), Empty() ),
Add Graphics Script(
3,
Description( "Script" ),
For Each Row(
If( Is Missing( :comment ) == 0,
V Line( Row() - 1 )
)
);
For Each Row(
If( Is Missing( :comment ) == 0,
Text(
//Right Justified,
{Row()-0.75, Col Maximum( :Avg )+ 1.005},
:Comment
)
)
);
), Grid Line Order( 5 ), Reference Line Order( 6 )}
)
)
);
@Sebnem ,
Existen varios métodos para crear el script (expresión) que tiene los valores incrustados para la línea vertical y el texto, no referencias a filas y columnas,
Funciones JSL para expresiones [Substitute (), NameExpr (), EvalExpr (), Expr ()] y funciones de caracteres JSL que convierten texto en expresiones JSL [Concat (), ConcatTo (), Eval Insert () y Parse] son buenas para aprender.
cc= Control Chart(
Sample Label( :TestDate ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Avg, Individual Measurement )
);
rcc = report(cc);
scrp = Expr(Add Graphics Script(3,
Description( "PM Labels" )));
//get y placement = axis max - 0.5* axis inc
ypos = (rcc[AxisBox(1)]<< Get Max) - 0.5* (rcc[AxisBox(1)] << Get Inc);
txtcmd = "";
For Each Row(
If( Is Missing( :comment ) == 0,
txtcmd ||= EvalInsert("\[
V Line( ^Row() -1^ );
Text(
//Right Justified,
{ ^Row() - .75^, ^ypos^},
"^:comment(Row())^");]\")
)//end if
); //end for each row
show (txtcmd ); //see log
InsertInto(scrp, Parse(txtcmd));
show (scrp ); //see log
txtxp = Substitute(Expr(rcc[FrameBox(1)] << cmd), Expr(cmd), NameExpr(scrp));
Show(NameExpr(txtxp));
Eval(txtxp);
Tenga en cuenta que en lugar de usar For Each Row (), un idx = dt << get filas donde (! Is Missing (: comment)) podría usarse para encontrar la lista más pequeña de filas con comentarios.

@ gzmorgan0
¡Esto funciona como un campeón!
¡Gracias!