Estoy intentando escribir un jsl para trazar un gráfico bivariado entre x vs. y, agrupar por los valores en la columna 'b' y ajustar una línea a través de cada uno de los grupos (a partir de los valores únicos en la columna 'b'). El script generado a partir del gráfico bivariado manual que hice es el siguiente, pero no puedo descubrir cómo agregar un bucle for para todos los comandos "Fit Where" que pasan por los valores únicos en la columna 'b'
Bivariate(
Y( :Name( "y" ) ),
X( :Name( "x" ) ),
Automatic Recalc( 1 ),
Fit Where( :p</img> == "grpA", Fit Line( {Line Color( {228, 26, 28} )} ) ),
Fit Where(
:b == "grpB",
Fit Line( {Line Color( {55, 126, 184} )} )
),
Fit Where(
:b == "grpC",
Fit Line( {Line Color( {77, 175, 74} )} )
),
Fit Where(
:b == "grpD",
Fit Line( {Line Color( {152, 78, 163} )} )
),
Fit Where(
:b == "grpE",
Fit Line( {Line Color( {255, 127, 0} )} )
),
Fit Where(
:b == "grpF",
Fit Line( {Line Color( {166, 86, 40} )} )
),
Where( :c == "TT" & :e == "EE" ),
SendToReport(
Dispatch( {}, "1", ScaleBox, {Reversed Scale} ),
Dispatch( {}, "2", ScaleBox, {Reversed Scale} ),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Marker Size( 6 ), Row Legend(
e,
Color( 0 ),
Color Theme( "" ),
Marker( 1 ),
Marker Theme( "Standard" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
),
Dispatch( {}, "Linear Fit b==grpA, OutlineBox, {Close( 1 )} ),
Dispatch( {}, "Linear Fit b==grpB", OutlineBox, {Close( 1 )} ),
Dispatch(
{},
"Linear Fit b==grpC",
OutlineBox,
{Close( 1 )}
),
Dispatch(
{},
"Linear Fit b==grpD",
OutlineBox,
{Close( 1 )}
),
Dispatch(
{},
"Linear Fit b==grpE",
OutlineBox,
{Close( 1 )}
),
Dispatch(
{},
"Linear Fit b==grpF",
OutlineBox,
{Close( 1 )}
)
)
);Creo que lo que estás buscando es groupby() arg.Si desea especificar colores, definitivamente es más fácil hacerlo a nivel de columna como @txnelson dicho.
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
biv = dt << Bivariate(
Y( :weight ),
X( :height ),
Group BY(:sex),
Fit line()
);Creo que será más fácil establecer los colores en una propiedad de columna para la variable: b, y usar un elemento By().
names default to here(1);
:b << set property("value colors",
{"grp8" = {55, 126, 184} }, "grpC" = {77, 175, 74} etc. }
);
Bivariate(
Y( :x ),
X( :y ),
Fit Line( ),<BR /> by( : B )
);La plataforma Bivariate tiene su propia función Agrupar por disponible desde el menú de la plataforma o JSL:
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = dt << Bivariate(
Y( :weight ),
X( :height )
);
obj
<< Group By( :sex )
<< Fit Line;