How to set color gradients for specified multiple columns stroke by stroke?Thanks Experts!
dt=Open("$SAMPLE_DATA/Big Class.jmp");
ca="height1";w=Try(Length(as Column(Current Data Table(),ca)<<GET name="">0;if(w<1,New Column(ca));Column(ca)<<FORMULA></FORMULA></GET>

Automation and ScriptingWindows回复: How to set color gradients for specified multiple columns stroke by stroke?AI
not work
dt = Current Data Table();
colRange = {9, 10, 11};
minVals = {};
maxVals = {};
For(i = 1, i <= N Items(colRange), i++,
col = Column(dt, colRange[i]);
minVals[i] = Col Min(col);
maxVals[i] = Col Max(col);
);
get_cell_color = Function({col, r, c},
s = col << get script;
p = 0;
For(i = 1, i <= N Arg(s), i++,
If(Head Name(Arg(s, i)) == "Color Cells",
p = i;
Break();
);
);
If(p != 0,
L = Arg(Arg(s, p), 1);
color = {};
For(i = 1, i <= N Items(L), i++,
If(N Row(Loc(L[i][2], r)) == 1,
color = L[i][1];
Break();
);
);
Return(color);
,
normalized = 0.5;
If(maxVals[c] != minVals[c],
normalized = (col[r] - minVals[c]) / (maxVals[c] - minVals[c]);
);
red = Round(255 * normalized);
green = 0;
blue = Round(255 * (1 - normalized));
Return(RGB Color(red, green, blue));
);
);
For Each Row(
For(i = 1, i <= N Items(colRange), i++,
colIdx = colRange[i];
col = Column(dt, colIdx);
Eval(Parse(Eval Insert("Column(dt, ^colIdx^) << Color Cells({{get_cell_color(Column(dt, ^colIdx^), Row(), ^i^), {Row()}}})")));
);
);Re: How to set color gradients for specified multiple columns stroke by stroke?Are you trying to color the cells on a row using color gradient?
Re: How to set color gradients for specified multiple columns stroke by stroke?No real idea what was requested here, but here is an attempt of a script to row wise gradient coloring
/*""" Gradient color cells rowwise (using whole data)
Author: jthi
Creation Date: 2025-06-08
Creation JMP Version: JMP Pro 18.2.0
"""*/
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/SAT.jmp");
dt << Delete Columns({"% Taking (2004)", "X", "Y", "Population", "Latitude", "Longitude"});
cont_cols = dt << Get Column Names("Continuous", "String");
m = dt[0, cont_cols];
mn = (m - Min(m)) / (Max(m) - Min(m));
colors = Heat Color(mn, "Cividis")`;
idx = 0;
dt << Begin Data Update;
For Each({contcol}, cont_cols,
For Each Row(dt,
idx++;
Column(dt, contcol) << Color Cells(colors[idx], Row());
);
);
dt << End Data Update;
wait(0);
write("\!NDONE");
Re: How to set color gradients for specified multiple columns stroke by stroke?dt = Current Data Table();
colRange = {9, 10, 11};
cont_cols = {};
For( i = 1, i <= N Items( colRange ), i++,
Insert Into( cont_cols, Column( dt, colRange[i] ) << Get Name );
);
m = dt[0, cont_cols];
mn = (m - Min( m )) / (Max( m ) - Min( m ));
colors = Heat Color( mn, "Green Yellow Red" );
idx = 0;
dt << Begin Data Update;
For Each( {contcol}, cont_cols,
For Each Row( dt,
idx++;
Column( dt, contcol ) << Color Cells( colors[idx], Row() );
);
);
dt << End Data Update;
Ok.
But it seems that in this way, the entire three columns form a whole
It is not a single row of three cells that form a color whole.
Thanks!
Re: How to set color gradients for specified multiple columns stroke by stroke?Implementing line by line would be too slow
Re: How to set color gradients for specified multiple columns stroke by stroke?What are you trying to do?
Re: How to set color gradients for specified multiple columns stroke by stroke?
The color change of each row is only based on the comparison of the values in the three columns of that row.
Thanks!
Re: How to set color gradients for specified multiple columns stroke by stroke?You have only three values for each row and wish to have just those three colors?
Re: How to set color gradients for specified multiple columns stroke by stroke?Something like this?
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/SAT.jmp");
dt << Delete Columns({"% Taking (2004)", "X", "Y", "Population", "Latitude", "Longitude"});
l = (dt << Get Column Names("Continuous", "String"))[1::3];
c1 = {"Green", "Yellow", "Red"};
c2 = [];
c3 = [];
For Each Row(dt,
r = Floor(Ranking Tie(dt[Row(), l])); // no idea what should be done with ties
c3 = c3 |/ r`;
);
dt << Begin Data Update;
For Each({i, idx}, l,
m = c3[0, idx];
g = Loc(m, 1);
y = Loc(m, 2);
r = Loc(m, 3);
Column(dt, i) << Color Cells({{"Green", g}, {"Yellow", y},{"Red", r}});
);
dt << End Data Update;
or like this
/*""" Gradient color cells rowwise (using whole data)
Author: jthi
Creation Date: 2025-06-08
Creation JMP Version: JMP Pro 18.2.0
"""*/
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/SAT.jmp");
dt << Delete Columns({"% Taking (2004)", "X", "Y", "Population", "Latitude", "Longitude"});
l = dt << Get Column Names("Continuous", "String");
c = [];
For Each Row(dt,
m = dt[Row(), l];
mn = (m - Min(m)) / (Max(m) - Min(m));
c = c |/ Heat Color(mn, "Cividis");
);
dt << Begin Data Update();
For Each({i, idx}, l,
cm = {};
For Each({c, idx}, c[0, idx],
v = Eval List({c, Eval List({idx})});
Insert Into(cm, Eval List({v}));
);
Eval(EvalExpr(
Column(dt, i) << Color Cells(Expr(cm));
));
);
dt << End Data Update();Re: How to set color gradients for specified multiple columns stroke by stroke?Thank jthi !
first
