Vi un video en el aire e intenté generar un gráfico de control que incluyera las líneas verticales y los comentarios (anotaciones). Tengo las líneas, pero los comentarios están todos en mal estado. Intenté varias cosas pero sin éxito. ¿Puede ver el archivo adjunto, el código y decirme cuál es el problema?
@gzmorgan0
¡Esto funciona como un campeón!
¡Gracias!
@Sebnem ,
Existen múltiples 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,
Las funciones JSL para expresiones [Substitute(), NameExpr(), EvalExpr(), Expr() ] y las 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() , podría usarse un idx= dt << get rows where ( !Is Missing( :comment ) ) para encontrar la lista más pequeña de filas con comentarios.

@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 Row() - 1, igual que la línea vertical. Comenté Justificado a la derecha y usé menos 0,75 para que la etiqueta estuviera justo a la derecha de la línea vertical.Elimine el comentario 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 Maximum(:Avg) es > 1500.Agregué un valor ficticio, es posible que desee considerar Col Max(:Avg) +0.10 * Col Std Dev(:Avg).
Así que tus problemas eran x e y pos. Este es un método fácil para agregar comentarios utilizando la información de la columna. Sin embargo, esto es solo como registro ya que la tabla 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 las 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 lo que salió mal con su secuencia de comandos.
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 )}
)
)
);