インジケーターの色こんにちは、みんな、
JMP で特定のプロセスの逸脱を確認できるレポートを作成しようとしています。
たとえば、私はプロセスで 6 つの項目を研究しており、色付きのインジケーターが欲しいと考えています。
- 5 つの連続ポイント (またはそれ以上) が 3 シグマより大きい場合: 赤色
- 連続する 3 点 (またはそれ以上) が 3sigma より大きい場合: 黄色
- それ以外の場合は緑色
そして、インジケーターの色に応じて項目ごとに次のようなものをレポートに表示できるようにしたいと考えています。

JMP で同様のことを行うにはどうすればよいでしょうか?
ご返答ありがとうございます。
自動化とスクリプトRe: インジケーターの色について各「アイテム」は別々の列にありますか?
データは順番通りになっていますか?
「アイテム」にはいくつの種類がありますか?
レポートの各行には 3 つの異なる項目のみを含める必要がありますか?
Re: インジケーターの色についてテーブルが必要な場合は、データ テーブルを使用してセルに色を付けます。グラフ ビルダーでは、ヒートマップを使用できる場合があります。スクリプトを作成する場合は、背景色を設定できるさまざまなオプションがあります。
Re: インジケーターの色について各「アイテム」は別々の列にありますか?はい、1列につき1つのアイテムです
データは順番に並んでいますか?はい、順番に並べることができます
「アイテム」にはいくつの種類がありますか?たくさんあります...。
レポートの各行には 3 つの異なる項目のみを含める必要がありますか?はい
Re: インジケーターの色について一つの簡単な選択肢は次のようなものです
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(6),
Compress File When Saved(1),
New Column("item",
Character,
"Nominal",
Set Values({"ITEM1", "ITEM2", "ITEM3", "ITEM4", "ITEM5", "ITEM6"})
),
New Column("status",
Character,
"Nominal",
Set Values({"Green", "Green", "Red", "Yellow", "Green", "Red"})
)
);
lub = Lineup Box(N Col(3));
For Each Row(dt,
Eval(EvalExpr(
lub << Append(
Text Box(:item, << Background Color(Expr(:status)))
)
));
);
nw = New Window("",
lub
);

Re: インジケーターの色について回答ありがとうございます。赤、黄、緑のインジケーターを備えた同様のテーブルを作成しようとしています。
私の目標は以下のものを作成することです。
- 連続する 5 点 (またはそれ以上) が赤 (3 シグマ以上) の場合、最後の点の色は赤になります。
- 連続する 3 点 (またはそれ以上) が赤 (3 シグマ以上) の場合、最後の点の色は黄色になります。
- それ以外の場合は緑色
添付ファイルには、例として機能する表が含まれています。次のスクリプトを作成しましたが、成功しませんでした。
dt = current data table();
// Créez une nouvelle colonne pour l'indicateur
dt << New Column("Indicateur", Character, Nominal);
// Boucle pour calculer l'indicateur ligne par ligne
For(i = 1, i <= N Rows(5), i++,
// Récupérer les 5 dernières valeurs de l'indicateur
last_five = dt:status[i,5]; //
// Comptez le nombre de "rouge"
count_rouge = N Items( last_five == "rouge");
// Attribuer une couleur en fonction des règles
If(count_rouge == 5,
dt:Indicateur Global[i] = "rouge"; // 5 rouges
,
If(count_rouge >= 3,
dt:Indicateur Global[i] = "jaune"; // 3 ou plus rouges
,
dt:Indicateur Global[i] = "vert"; // Sinon vert
);
);
);Re: インジケーターの色についてこのコードはあなたが望むことを実現すると思います:
dt = New Table( "testcolors", Add Rows( 15 ),
New Column( "Article", Character, "Nominal",
Set Values( {"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A"}
) ),
New Column( "Item", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] )
),
New Column( "status", Character, "Nominal",
Set Values(
{"red", "red", "red", "green", "green", "red", "red", "red", "red",
"red", "red", "green", "red", "red", "red"}
)
),
// Créez une nouvelle colonne pour l'indicateur
New Column("Indicateur", Character, Nominal)
);
one_color = "xyz";
icolor = 0;
for (i = 1, i <= nrows(dt), i++,
one_color = dt:status[i];
if (one_color == "red",
icolor++;
// else
,
if (icolor >= 5,
dt:Indicateur << Color Cells( "Red", i-1 );
icolor = 0;
// else
,
icolor >= 3,
dt:Indicateur << Color Cells( "Yellow", i-1 );
icolor = 0;
);
);
);
// Handle the last row
if (icolor >= 5,
dt:Indicateur << Color Cells( "Red", i-1 );
// else
,
icolor >= 3,
dt:Indicateur << Color Cells( "Yellow", i-1 );
);

Re: インジケーターの色について私はまだ混乱しています。しかし、あなたが提供したデータテーブルは、あなたが計算しようとしている結果を含むテーブルであるように見えるので、Indicateur列のセルに色を付けることは簡単です。

names default to here(1);
dt=current data table();
dt << New Column("Indicateur", Character, Nominal);
:indicateur << color cells("red",dt<<GET rows="" where=""></GET>
<P>または別のレポートを作成することもできます</P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="txnelson_1-1736426542617.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="txnelson_1-1736426542617.png" style="width: 119px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="txnelson_1-1736426542617.png" style="width: 119px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="txnelson_1-1736426542617.png" style="width: 119px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="txnelson_1-1736426542617.png" style="width: 119px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="txnelson_1-1736426542617.png" style="width: 119px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="txnelson_1-1736426542617.png" style="width: 119px;"><span class="lia-inline-image-display-wrapper" image-alt="txnelson_1-1736426542617.png" style="width: 119px;"><img src="https://us.v-cdn.net/6038925/uploads/images/71760iF5D0EC4B9B8E8098/txnelson_1-1736426542617.png" role="button" title="txnelson_1-1736426542617.png" alt="txnelson_1-1736426542617.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P>
<CODE class=" language-jsl">nw=new window("colors", lub=lineupbox(ncol(3)));
For Each Row(dt,
Eval(EvalExpr(
lub << Append(
Text Box("Item" || char(:item), << Background Color(Expr(:status)))
)
));
);Re: インジケーターの色についてこんにちは、回答ありがとうございます。このテストベースではうまく機能します。
複数の記事がある場合にこのスクリプトを一般化しようとしています。カラーインジケーターはアイテムごとに作成されます。
次のスクリプトを使用しますが、正しい最終結果が得られません。
dt = current data table();
// Créez une nouvelle colonne pour l'indicateur
dt << New Column("Indicateur", Character, Nominal)
one_color = "xyz";
icolor = 0;
Summarize(dt, unique_objects = by(:Article));
m_obs = dt[0, "Article"];
For each( {unique_objects}, m_obs,
for (i = 1, i <= nrows(dt), i++,
one_color = dt:status[i];
if (one_color == "red",
icolor++;
// else
,
if (icolor >= 5,
dt:Indicateur << Color Cells( "Red", i-1 );
icolor = 0;
// else
,
icolor >= 3,
dt:Indicateur << Color Cells( "Yellow", i-1 );
icolor = 0;
);
);
);
// Handle the last row
if (icolor >= 5,
dt:Indicateur << Color Cells( "Red", i-1 );
// else
,
icolor >= 3,
dt:Indicateur << Color Cells( "Yellow", i-1 );
);
);得られた結果:

記事 B には 3 つの連続した赤い点があるため、18 行目は黄色になるはずです。
Re: インジケーターの色についてこれが私のアプローチです

names default to here(1);
dt = current data table();
// Créez une nouvelle colonne pour l'indicateur
dt << New Column("Indicateur", Character, Nominal);
one_color = "xyz";
icolor = 0;
For Each Row(
// If the value of Article has changed set icolor to 0
If( Lag( :Article ) != :Article,
icolor = 0
);
// If status is red, increment icolor else set it back to zero
If( :status == "red",
icolor++,
icolor = 0
);
// Check for the number of icolor
// Set the value for the cell to the appropriate color
// When a color is specified remove no longer correct cell colors
// for previous rows
If(
icolor >= 5,
dt:Indicateur << color cells("red",row());
dt:Indicateur << color cells("",row()-1);
If( icolor == 5,
dt:Indicateur << color cells("",row()-2);
);,
icolor >= 3,
dt:Indicateur << color cells("yellow",row());
dt:Indicateur << color cells("",row()-1);
);
);Re: インジケーターの色についてご返答ありがとうございます。
動作しますが、期待どおりには動作しません。
2 番目の if ループを変更しようとしましたが、解決策が見つかりません。
以下は私が達成したい正確な結果です:

Re: インジケーターの色について前回のスクリプトでは、一連の最後の行のみに計算された色を保持することを想定していました。最新の仕様を実現するために、スクリプトが一連の最後の行ではないと判断した場合、色をリセットする行をコメント アウトしました。

names default to here(1);
dt = current data table();
// Créez une nouvelle colonne pour l'indicateur
dt << New Column("Indicateur", Character, Nominal);
one_color = "xyz";
icolor = 0;
For Each Row(
// If the value of Article has changed set icolor to 0
If( Lag( :Article ) != :Article,
icolor = 0
);
// If status is red, increment icolor else set it back to zero
If( :status == "red",
icolor++,
icolor = 0
);
// Check for the number of icolor
// Set the value for the cell to the appropriate color
// When a color is specified remove no longer correct cell colors
// for previous rows
If(
icolor >= 5,
dt:Indicateur << color cells("red",row());
//dt:Indicateur << color cells("",row()-1);
/*If( icolor == 5,
dt:Indicateur << color cells("",row()-2);
);*/,
icolor >= 3,
dt:Indicateur << color cells("yellow",row());
//dt:Indicateur << color cells("",row()-1);
);
);Re: インジケーターの色についてこれが最初の質問とどう関係するのか分かりませんが、インジケータ列を作成するための少し異なるオプションがあります。
dt = Current Data Table();
dt << New Column("Color", Character, Nominal,
Set Property(
"Value Colors",
{"Green" = "Green", "Red" = "Red", "Yellow" = "Yellow"}
),
Color Cell By Value,
Formula(
is_red = :status == "red";
If(Row() == 1,
red_count = is_red;
);
If(:Article != Lag(:Article, 1) | is_red == 0,
red_count = is_red;
,
red_count = red_count + is_red;
);
If(red_count >= 5,
"Red";
, red_count >= 3,
"Yellow"
,
"Green"
);
)
);