¿Cómo establecer una línea de referencia en cada página con la opción Página en el Generador de gráficos?El siguiente script traza algunos gráficos con la opción de página en el generador de gráficos. ¿Cómo establezco una línea de referencia horizontal para cada gráfico, por ejemplo, en Peso = 80 kg y la etiqueto (80 kg) usando JSL?
(Necesito que la línea de referencia permanezca incluso si hay un cambio en el número de gráficos trazados)
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(528, 2954),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Page(:age)),
Elements(Points(X, Y, Legend(15)), Smoother(X, Y, Legend(16)))
);Automatización y scriptingVentanasRe: ¿Cómo establecer una línea de referencia en cada página con la opción Página en el Generador de gráficos?Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(528, 2954),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Page(:age)),
Elements(Points(X, Y, Legend(15)), Smoother(X, Y, Legend(16)))
);
axis = gb << XPath( "//AxisBox" );
Summarize( page = By( :age ) );
axis[2::(2*NItems( page ))::2] << Add Ref Line( 80, "Solid", "Red", "Reference" );Re: ¿Cómo establecer una línea de referencia en cada página con la opción Página en el Generador de gráficos?@Mark_Bailey Deja de funcionar para mí (JMP 16.2) si invoco el Filtro de datos locales en Edad después de trazar, como se muestra a continuación

Re: ¿Cómo establecer una línea de referencia en cada página con la opción Página en el Generador de gráficos?La forma más sencilla es agregar una nueva columna a la tabla de datos con el mismo valor para cada una de las filas y agregarla al gráfico. Esto funcionará con filtros.
Re: ¿Cómo establecer una línea de referencia en cada página con la opción Página en el Generador de gráficos?@jthi tu sugerencia funciona bien, excepto que me gustaría que la etiqueta de la línea esté a la derecha. ¿Hay alguna manera de cambiar la ubicación de la etiqueta de la línea?
Re: ¿Cómo establecer una línea de referencia en cada página con la opción Página en el Generador de gráficos?No recuerdo qué opciones están disponibles en JMP16, ya que actualmente utilizo principalmente JMP18 (con algo de JMP17 mezclado)
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Ref", Numeric, Continuous, Set Each Value(80));
gb = dt << Graph Builder(
Size(528, 984),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Y(:Ref, Position(1)), Page(:age)),
Elements(
Points(X, Y(1), Legend(15)),
Smoother(X, Y(1), Legend(16)),
Line(Y(2), Legend(17))
),
Local Data Filter(
Add Filter(
columns(:age),
Where(:age == {12, 15}),
Display(:age, N Items(6))
)
),
SendToReport(
Dispatch({}, "400", ScaleBox,
{Legend Model(
17,
Level Name(0, "Ref", Item ID("Mean(Ref)", 1)),
Properties(
0,
{Line Label Properties(
{Name Label(1), Name Label Position("Last")}
)},
Item ID("Mean(Ref)", 1)
)
)}
)
)
);
Write();

Re: ¿Cómo establecer una línea de referencia en cada página con la opción Página en el Generador de gráficos?No es necesario cambiar la tabla de datos.
Replicar la configuración del eje mediante
Link Page Axes( "Y Only" )
También copia las líneas de referencia.
p.ej
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Link Page Axes( "Y Only" ),
Variables( X( :height ), Y( :weight ), Page( :sex ), Overlay( :sex ) ),
Elements( Points( X, Y), Smoother( X, Y) ),
SendToReport(
Dispatch( {}, "weight", ScaleBox,
{Add Ref Line( 100, "Solid", "Black", "", 1 )}
)
)
);

Re: ¿Cómo establecer una línea de referencia en cada página con la opción Página en el Generador de gráficos?Esa también es una opción, pero se pierde uno de los beneficios de Page: tener diferentes escalas de eje para diferentes "páginas". Puede que no sea un problema en este caso e incluso podría ser un beneficio.
Re: ¿Cómo establecer una línea de referencia en cada página con la opción Página en el Generador de gráficos?@jthi Gracias.
Name Label Position("Last")No parece estar disponible/funcionando en JMP 16.2.
@hogi El motivo por el que elegí la opción Página es poder obtener diferentes escalas en el eje Y. Estoy seguro de que hay otras formas de hacerlo, pero la opción Página parece la más sencilla.
Re: ¿Cómo establecer una línea de referencia en cada página con la opción Página en el Generador de gráficos?Entonces, es posible que tengas que volver a la solución de Mark y usar el controlador de cambio de filtro con ella. Nuevamente, no tengo idea de cuáles son las limitaciones de JMP16 con esta opción.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(528, 984),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Page(:age)),
Elements(
Points(X, Y(1), Legend(15)),
Smoother(X, Y(1), Legend(16))
),
Local Data Filter(
Add Filter(
columns(:age),
Where(:age == {12, 15}),
Display(:age, N Items(6))
)
)
);
add_reflines = EvalExpr(
axis = Expr(gb) << XPath("//AxisBox");
axis[2::N Items(axis)::2] << Add Ref Line(80, "Solid", "Red", "Reference", 1, 1, Label Settings({Opposite Axis(1)}));
);
f = Function({a}, add_reflines);
ldf = (Report(gb) << top parent)[OutlineBox("Local Data Filter")] << Get Scriptable Object;
rs = ldf << Make Filter Change Handler(f);
add_reflines;
Write();
Esta no es la opción más sólida para hacer esto, pero es bastante simple.
Re: ¿Cómo establecer una línea de referencia en cada página con la opción Página en el Generador de gráficos?Y el guión gráfico podría ser una opción.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(528, 984),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Page(:age)),
Elements(
Points(X, Y(1), Legend(15)),
Smoother(X, Y(1), Legend(16))
)
);
(Report(gb) << XPath("//FrameBox")) << Add Graphics Script(
Pen Color("Red");
Text Color("red");
Text(Right Justified, {X Origin() + X Range(), 80}, "Reference");
H Line(80);
);
gb << Local Data Filter(
Add Filter(
columns(:age),
Display(:age, N Items(6))
)
);
Write();