基于公式结果的颜色单元格大家好,
我有一列(我们称之为指标),其中有一个返回 0 或 1 的公式。
现在我知道如何做到这一点:
formulaResult = :Indicator << Get Values;
:Indicator << Color Cells( "red", Loc(formulaResult==1) );
但我真正想做的是让数据表动态响应:如果我更改数据以使指示器切换为 0(假),我不希望单元格再突出显示,如果我添加更多数据到表格和公式计算,我希望 1 突出显示。
我无法弄清楚如何使用 Color Cells 来做到这一点。 我认为也许 Color Gradient 列属性的一个奇怪实现可能会起作用,但是在玩了一段时间之后,我无法得到我想要的结果。 寻找一些想法。
迈克尔
回复:基于公式结果的颜色单元格这是使用白色的相同方法别的条款。 默认情况下,隐藏列是数字,因此 Then 和 Else 都必须返回数字,例如缺失值。
dt = Open("$SAMPLE_DATA\Big Class.jmp");
dt << New Column("highlight cells",
Formula(If(100 < :weight < 135, :weight << color cells("Red", Row()); .,
:weight << color cells("White", Row()); .)),
Hide(1)
);
回复:基于公式结果的颜色单元格除非您更改权重,否则这种方法对我有用。 我想我可以简单地添加一个请求,将 If() 语句中的 else 参数设置为 Color Cells("White",Row()) ,但这似乎不起作用。
它还需要为每个具有规格限制的参数创建一个新列,尽管我想我们可以编写一个创造性的公式来遍历所有列,检查 Spec Limits 列属性,如果找到一个并为适当的列着色? 至少隐藏了额外的列。
回复:基于公式结果的颜色单元格也许并不明显,但您可能会发现这种方法不那么“笨拙”:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA\Big Class.jmp");
dt << New Column("highlight cells",
Formula(If(100 < :weight < 135, :weight << color cells("Red", Row()); ., .)),
Hide(1)
);回复:基于公式结果的颜色单元格绝对同意。您绝对应该在 support@jmp.com 提出功能请求。
回复:基于公式结果的颜色单元格这很笨拙,在 JMP 中应该有更直接/更明显的方法来做到这一点,但这个解决方案可以工作。 谢谢你。
回复:基于公式结果的颜色单元格所以基本上我只是在伪造一个在一个小窗口上渐变的颜色渐变。所以只有两种颜色你只需要 4 分。 0、一些非常接近 0 的数字、一些非常接近 1 的数字和 1。如果您想要超过 2 种颜色,则必须在您想要的范围内的每个点处计算从 0 到 1 的值。例如,如果您想要 110,则必须在 10/35 和 10/35+.0000001 处添加两个值
Names Default to Here(1);
dt = Open("$SAMPLE_DATA\Big Class.jmp");
Column(dt, "weight") << Set Property(
"Color Gradient" ,
{{"Something", 16387,
{{255, 0, 0}, {0, 255, 0}, {0, 255, 0}, {255, 0, 0}}, //list of colors
{0, .00000001, .9999999, 1}}, //corresponding locations from 0 to 1
Range( {100, 135, 117.5} ) //minimum, maximum and center. 0, 1, and .5 is another way to look at it
}
);
Column(dt, "weight") << Color Cell By Value(1);
回复:基于公式结果的颜色单元格对不起。 这个解决方案不允许我用一种颜色(比如红色)为感兴趣的范围之外的值着色,以及用另一种颜色(比如白色)在感兴趣的范围内着色。 这个 col min, col mean, col max 解决方案似乎是一种简单地放入一些默认值来进行渐变的方法。 什么吸引人@vince_faller的解决方案是它创建一个自定义渐变,将两种颜色(我认为)强制到列上。 对我没有吸引力的是,当我从“好”颜色切换到“坏”颜色时,我不明白如何精确控制。
回复:基于公式结果的颜色单元格您可以使用 colmin、colmax 和 colmean 进行计算:
frr_min = col min(:FRR);
frr_max = col max(:FRR);
frr_avg = col mean(:FRR);
// Color FRR with a gradient
column(hlt_dt, "FRR") << Set Property( "Color Gradient", {"Light Spectral", Range(expr(frr_min), expr(frr_max), expr(frr_avg))});
column(hlt_dt, "FRR") << color cell by value(1);回复:基于公式结果的颜色单元格这更近了。 看起来绿色范围约为。此示例为 92-127。 假设我的规格范围是 100-135。 如何进行数学计算以找出输入颜色渐变中范围函数的端点? (然后我不得不在这里向其他 JMP 用户解释为什么他们需要将两个数字(即 100 和 135)转换为三个值以满足 Range 函数的痛点。)
回复:基于公式结果的颜色单元格为什么颜色渐变不起作用?
Names Default to Here(1);
dt = Open("$SAMPLE_DATA\Big Class.jmp");
Column(dt, "weight") << Set Property(
"Color Gradient" ,
{{"Something", 16387, {{255, 0, 0}, {255, 0, 0}, {0, 255, 0}, {0, 255,
0}, {255, 0, 0}, {255, 0, 0}}, {0, 0.33333333, 0.33333334,
0.666666666666, 0.666666666667, 1}}, Range( {64, 172, 105} )
}
);
Column(dt, "weight") << Color Cell By Value(1);

回复:基于公式结果的颜色单元格一周后,这个问题又出现了。
新的应用程序是我们有很多情况要标记超出规范的值。 颜色渐变和价值颜色都不能很好地做到这一点。 我们当然可以基于 0 与 1 创建一个新列和颜色,但如果我有多个变量需要强制执行,我将不得不为每个变量创建一个新列。 这将很快变得笨拙! 我想要一个更好的解决方案。
回复:基于公式结果的颜色单元格为了计算缺陷,我可以使用它。 有时我也有需要使用的连续变量,而这个解决方案在那里不起作用,但在那种情况下,颜色渐变可能会正常工作。
回复:基于公式结果的颜色单元格制作一个列表,按照您需要的方式定义值颜色,例如白色表示 0,红色表示整数 > 0。 Value Colors 属性似乎要求每个要着色的值都有自己的“赋值”。 因此,“缺陷”的所有可能值都必须包含在列表中。
例子:
// Make list that defines the Value Colors
n = 10; //set highest conceivable nr of defects
vc = {0 = 2}; // White cell color for no defects
For(i = 1, i <= n, i++,
Insert Into(vc, Eval Expr(Expr(i) = 19)) // red for defects 0
);
// Example table
dt = New Table("test",
Add Rows(50),
New Column("Defects", Formula(Random Integer(0, 3)), Set Property("Value Colors", vc), Color Cell by Value)
);
回复:基于公式结果的颜色单元格标记,
当然。 我可以创建另一个指标列是有道理的。 唯一的问题是这会给指示列中的单元格着色,而不是突出显示缺陷的数量,如下所示:

我更喜欢的是:

有任何想法吗?
回复:基于公式结果的颜色单元格您只需更改列公式中使用的逻辑,例如 :data > 0。回复:基于公式结果的颜色单元格惊人的! 我想我有点过度简化了我的问题。 让我们试试这个概括。
现在我的指标现在是缺陷计数(0、1、2、3、4 等)。 如何用相同的颜色为 >=1 的所有内容着色,而不是为零着色?
回复:基于公式结果的颜色单元格尝试选中“按值着色单元格”的“值颜色”属性。
例子:
// Example table
dt = New Table("test",
Add Rows(10),
New Column("data", Formula(Random Uniform())),
New Column("Indicator",
Set Property("Value Colors", {. = -12632256}),
Formula(:data < 0.5),
Color Cell by Value
)
);
// Test if dynamic
Wait(1);
:data << eval formula;
Wait(1);
dt << add rows(10);