Come utilizzare le variabili nei valori di scala (di una mappa termica)Ciao a tutti,
Nell'esempio seguente è stata creata una mappa termica utilizzando Big Class.jmp come esempio:
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 )
)
)}
)
)
);Esiste un modo per utilizzare le variabili per definire i limiti della scala del gradiente? Ecco cosa vorrei ottenere:
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 )
)
)}
)
)
);
Vorrei utilizzare "grandient_low" e "gradient_high" per definire i limiti del gradiente della mappa di calore.
Ho provato a utilizzare eval() , eval expr(), ecc. Ma non sono ancora riuscito a farlo funzionare.
Grazie
Automazione e scriptingRe: Come utilizzare le variabili nei valori di scala (di una mappa termica)Puoi
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)
)
)}
)
)
)));
ma molto probabilmente passerei tramite 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: Come utilizzare le variabili nei valori di scala (di una mappa termica)@LatentDataTiger
Ciò che afferma Jarmo è corretto.Tuttavia, ha apportato una modifica al tuo esempio che potrebbe non essere notata.Il tuo esempio utilizza la variabile Age come colonna Color, dove Jarmo l'ha modificata in Height.La differenza è che Età ha un tipo di modellazione Ordinale e Altezza ha un tipo di modellazione Continuo.Una colonna ordinale non rispetterà i valori del gradiente.Per fare ciò per l'età, è necessario modificare il Tipo di modello della colonna.Ecco uno script che imposta il gradiente di colore specificato per il tuo esempio originale.
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: Come utilizzare le variabili nei valori di scala (di una mappa termica)Ciao Jarmo e Jim
Sono molto interessante apprendere la tecnica del server delle legende, ma l'ultima riga del tuo script non ha funzionato. Ecco l'errore che ottengo:
object not subscriptable in access or evaluation of 'items[1][1]' , items[1][/*###*/1]
Potete per favore aiutarmi a controllare l'ultima riga
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)})});
Grazie,
rex
Re: Come utilizzare le variabili nei valori di scala (di una mappa termica)Potrebbe forse essere correlato alla versione. Quale versione di JMP stai utilizzando? Sto usando JMP 17.2.
Re: Come utilizzare le variabili nei valori di scala (di una mappa termica)Attualmente sto utilizzando JMP 15 e 16. Ho JMP 17, ma alcuni degli strumenti sviluppati dai miei colleghi non funzionavano in JMP17, quindi ho deciso di rimanere con 15 e 16.