Cómo utilizar variables en valores de escala (de un mapa de calor)Hola a todos,
En el siguiente ejemplo, se creó un mapa de calor utilizando Big Class.jmp como ejemplo:
gb=Graph Builder(
Size( 686, 525 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ), Color( :age ) ),
Elements( Heatmap( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
7,
Properties(
0,
{gradient( {Scale Values( [11 18] )} )},
Item ID( "age", 1 )
)
)}
)
)
);¿Hay alguna forma de utilizar variables para definir los límites de la escala de gradiente? Esto es lo que me gustaría lograr:
gradient_low=10;
gradient_high=19;
gb=Graph Builder(
Size( 686, 525 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ), Color( :age ) ),
Elements( Heatmap( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
7,
Properties(
0,
{gradient( {Scale Values( matrix({<FONT face="arial black,avant garde" color="#FF0000">gradient_low</FONT>, <FONT face="arial black,avant garde" color="#FF0000">gradient_high</FONT>}) )} )},
Item ID( "age", 1 )
)
)}
)
)
);
Me gustaría utilizar "grandient_low" y "gradient_high" para definir los límites de gradiente del mapa de calor.
Intenté usar eval() , eval expr(), etc. pero aún no lo he hecho funcionar.
Gracias
Automatización y secuencias de comandosRe: Cómo utilizar variables en valores de escala (de un mapa de calor)Puede
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gradient_low = 10;
gradient_high = 19;
gb = Eval(EvalExpr(dt << Graph Builder(
Size(686, 525),
Show Control Panel(0),
Variables(X(:weight), Y(:height), Color(:height)),
Elements(Heatmap(X, Y, Legend(7))),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
7,
Properties(
0,
{gradient({Scale Values(Expr(Matrix({gradient_low, gradient_high})`))})},
Item ID("height", 1)
)
)}
)
)
)));
pero lo más probable es que utilice Legend Server
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gradient_low = 10;
gradient_high = 19;
gb = dt << Graph Builder(
Size(686, 525),
Show Control Panel(0),
Variables(X(:weight), Y(:height), Color(:height)),
Elements(Heatmap(X, Y, Legend(7))),
);
m_gradient = Matrix({gradient_low, gradient_high})`;
server = gb << Get Legend Server;
items = server << Get Legend Items;
items[1][1] << Set Properties({gradient({Scale Values(m_gradient)})});Re: Cómo utilizar variables en valores de escala (de un mapa de calor)@LatentDataTiger
Lo que afirma Jarmo es correcto.Sin embargo, ha hecho un cambio en su ejemplo que tal vez no se note.Su ejemplo utiliza la variable Edad como columna Color, donde Jarmo la cambió a Altura.La diferencia es que la edad tiene un tipo de modelado ordinal y la altura tiene un tipo de modelado continuo.Una columna ordinal no respetará los valores de gradiente.Para hacer esto por edad, necesita cambiar el tipo de modelado de la columna.Aquí hay un script que establece el degradado de color especificado para su ejemplo original.
Names Default To Here( 1 );
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
dt:age << modeling type( continuous );
gradient_low = 10;
gradient_high = 19;
Eval(
Eval Expr(
gb = Graph Builder(
Size( 686, 525 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ), Color( :age ) ),
Elements( Heatmap( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
7,
Properties(
0,
{gradient(
{Scale Values( Matrix( {Expr( gradient_low ), Expr( gradient_high )} ) )}
)},
Item ID( "age", 1 )
)
)}
)
)
)
)
)
;Re: Cómo utilizar variables en valores de escala (de un mapa de calor)Hola Jarmo y Jim.
Estoy muy interesado en aprender la técnica del servidor legendario, pero la última línea de tu script no funcionó. Aquí está el error que recibo:
object not subscriptable in access or evaluation of 'items[1][1]' , items[1][/*###*/1]
¿Puedes ayudarme a comprobar la última línea?
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gradient_low = 10;
gradient_high = 19;
gb = dt << Graph Builder(
Size(686, 525),
Show Control Panel(0),
Variables(X(:weight), Y(:height), Color(:height)),
Elements(Heatmap(X, Y, Legend(7))),
);
m_gradient = Matrix({gradient_low, gradient_high});
server = gb << Get Legend Server;
items = server << Get Legend Items;
items[1][1] << Set Properties({gradient({Scale Values(m_gradient)})});
Gracias,
rex
Re: Cómo utilizar variables en valores de escala (de un mapa de calor)Quizás podría estar relacionado con la versión. ¿Qué versión de JMP estás usando? Estoy usando JMP 17.2.
Re: Cómo utilizar variables en valores de escala (de un mapa de calor)Actualmente estoy usando JMP 15 y 16. Tengo JMP 17, pero algunas de las herramientas que desarrollaron mis colegas no funcionaban en JMP17, así que decidí quedarme con 15 y 16.