数式の結果に基づいてセルに色を付けるやあみんな、
0 または 1 を返す数式を含む列 (インジケーターと呼びます) があります。
今のところ、私はこれを行う方法を知っています:
formulaResult = :Indicator << Get Values;
:Indicator << Color Cells( "red", Loc(formulaResult==1) );
しかし、私が本当にやりたいのは、データ テーブルを動的に応答させることです。インジケーターが 0 (偽) に切り替わるようにデータを変更した場合、セルはそれ以上強調表示されなくなります。また、さらにデータを追加した場合、表と数式が計算されるので、1 を強調表示したいと思います。
カラーセルでこれを行う方法がわかりません。 Color Gradient 列プロパティの奇妙な実装が機能するかもしれないと考えましたが、しばらくそれを試してみましたが、期待した結果は得られませんでした。 いくつかのアイデアを探しています。
マイケル
Re: 数式の結果に基づいてセルに色を付けるこれは白のカラーリングでも同じアプローチですそれ以外句。 ここでは、非表示の列はデフォルトで数値であるため、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)
);
Re: 数式の結果に基づいてセルに色を付ける重みを変更しない限り、このアプローチは私にとってはうまくいきます。 If() ステートメントの else パラメーターを Color Cells("White",Row()) に設定するリクエストを単純に追加できると思いましたが、それは機能しないようです。
また、仕様制限のあるパラメータごとに新しい列が必要ですが、すべての列を反復処理して仕様制限列のプロパティをチェックし、見つかった場合は適切な列に色を付けるという創造的な数式を書くこともできると思います。 ? 少なくとも余分な列は非表示になります。
Re: 数式の結果に基づいてセルに色を付ける明白ではないかもしれませんが、このアプローチは「ぎこちない」と感じるかもしれません。
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)
);Re: 数式の結果に基づいてセルに色を付ける全く同感であります。その機能リクエストは必ず support@jmp.com に送信してください。
Re: 数式の結果に基づいてセルに色を付けるこれは不格好であり、JMP でこれを行うためのより直接的/明白な方法があるはずですが、この解決策は機能します。 ありがとう。
Re: 数式の結果に基づいてセルに色を付ける基本的には、小さなウィンドウ上でグラデーションになるカラー グラデーションを偽装しているだけです。したがって、2 色の場合、必要なポイントは 4 つだけです。 0、0 に非常に近い数値、1 に非常に近い数値、および 1。3 つ以上の色が必要な場合は、必要な範囲内の各点で 0 から 1 までの値を計算する必要があります。たとえば、110 が必要な場合は、10/35 と 10/35+.0000001 の 2 つの値を追加する必要があります。
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);
Re: 数式の結果に基づいてセルに色を付けるごめん。 このソリューションでは、対象範囲外の値を 1 つの色 (たとえば、赤) で色付けしたり、対象範囲内の値を別の色 (たとえば、白) で色付けしたりすることはできません。 この列最小値、列平均値、列最大値の解決策は、単にいくつかのデフォルトを設定してグラデーションを実行する方法のようです。 何が魅力的だったのか@vince_fallerの解決策は、列に正確に 2 色 (おそらく) を強制するカスタム Gradient を作成することです。 私にとってまだ魅力的ではないのは、「良い」色から「悪い」色に切り替えるときを正確に制御する方法がわからないことです。
Re: 数式の結果に基づいてセルに色を付ける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);Re: 数式の結果に基づいてセルに色を付けるこちらの方が近いですね。 緑色の範囲は約 100 mm であるように見えます。この例では 92-127 です。 私のスペック範囲が 100 ~ 135 であると仮定します。 カラー グラデーションの Range 関数に入力するエンドポイントを計算するにはどうすればよいですか? (そして、ここで他の JMP ユーザーに、Range 関数を満たすために 2 つの数値、つまり 100 と 135 を 3 つの値に変換する必要がある理由を説明しなければならないという厄介な点があります。)
Re: 数式の結果に基づいてセルに色を付けるカラーグラデーションが機能しないのはなぜですか?
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);

Re: 数式の結果に基づいてセルに色を付けるこの問題は、わずか 1 週間後にすでに私に再び直面しています。
新しい用途は、仕様外の値にフラグを立てたい状況が数多くあることです。 カラー グラデーションも値カラーも、これにはあまり役に立ちません。 確かに、0 対 1 に基づいて新しい列と色を作成することはできますが、強制する仕様を持つ変数が複数ある場合は、変数ごとに新しい列を作成する必要があります。 これではすぐに扱いにくくなります。 より良い解決策が欲しいです。
Re: 数式の結果に基づいてセルに色を付ける欠陥を数えるには、これを使用できます。 場合によっては、連続変数を操作する必要がある場合もあり、このソリューションはそこでは機能しませんが、その状況では色のグラデーションが問題なく機能する可能性があります。
Re: 数式の結果に基づいてセルに色を付ける必要に応じて値の色を定義するリストを作成します。たとえば、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)
);
Re: 数式の結果に基づいてセルに色を付けるマーク、
もちろん。 別のインジケーター列を作成するだけでよいのは当然です。 唯一の問題は、次のように、欠陥の数が強調表示されるのではなく、インジケーター列のセルに色が付けられることです。

私が好むのはこれです:

何か案は?
Re: 数式の結果に基づいてセルに色を付ける列の式で使用されるロジックを変更するだけです (例:data > 0)。Re: 数式の結果に基づいてセルに色を付ける素晴らしい! 私は問題を少し単純化しすぎたと思います。 この一般化を試してみましょう。
これで、インジケーターは欠陥の数 (0、1、2、3、4 など) になりました。 ゼロを着色せずに、>=1 のすべてを同じ色で着色するにはどうすればよいですか?
Re: 数式の結果に基づいてセルに色を付ける「値ごとにセルに色を付ける」をチェックした状態で「値の色」プロパティを試してください。
例:
// 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);