カラーコードトップ5表を色分けしたいと思います(作成したすべてのチャートとグラフが同じになるように)。 ただし、上位 5 が赤、中央の 15 が黄色、下位 27 が緑になるようにしたいと考えています。 これを行う簡単な方法が必要です。
コンテキストとして、2014 年から 2021 年まで追跡する必要があるさまざまな病気の CDC 率データをすべて持っています。 米国をいずれかの州と比較し、その州が他の州と比較して上位 5 位、中位、下位のいずれにあるかを示すことができる必要があります。 完璧な世界では、米国の 1 行がベンチマークとして常に黒として表示されます。 以下にデータファイルを添付しました。 1 つは列内のデータであり、もう 1 つはデータが積み上げられています。
JMP17を使用しています。
データの探索と視覚化結果の共有と伝達ウィンドウズRe: カラーコードトップ5これは、上位、中位、下位、および米国のグループ分けを行う小さなスクリプトです。
これは年ごとに個別に行われます。それが望ましくない場合は、年の参照を削除することでスクリプトを簡単に変更できます。

Names Default To Here( 1 );
dt = Data Table( "All Items 2014-2021 Stacked" );
dtSum =
// → Data Table( "SummaryData" )
Data Table( "All Items 2014-2021 Stacked" ) << Summary(
Group( :State, :Year ),
Mean( :Data ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table name( "SummaryData" )
);
dtSum << delete rows( dtSum << get rows where( :state == "United States" ) );
// Sort data table
dtSum = Data Table( "SummaryData" ) << Sort(
By( :Year, :"Mean(Data)"n ),
Replace Table,
Order( Ascending, Ascending )
);
DtSum << New Column( "Color Group",
character,
set each value(
If(
Col Cumulative Sum( 1, :Year ) <= 5, "Top",
Col Cumulative Sum( 1, :Year ) <= 20, "Middle",
"Bottom"
)
)
);
Data Table( "All Items 2014-2021 Stacked" ) << Update(
With( Data Table( "SummaryData" ) ),
Match Columns( :State = :State, :Year = :Year )
);
dt:Color Group[dt << get rows where( :Color Group == "" )] = "U.S.";
dt << delete column( :"Mean(Data)"n );
dt:color group << set property( "value colors", {"Bottom" = 20, "Middle" = 41, "Top" = 19, "U.S." = 0} );
dt << Graph Builder(
Size( 534, 464 ),
Show Control Panel( 0 ),
Variables( X( :State ), Y( :Data ), Color( :Color Group ) ),
Elements( Points( X, Y, Legend( 7 ) ) )
);
Re: カラーコードトップ5これはとても役に立ちます。 ただし、スクリプトの最初の部分では、概要データが生成されます。 N 行とはどういう意味ですか? それぞれがどのウイルスであるかを知る必要があります。
Re: カラーコードトップ5N Rows 列には、メイン テーブル内の 1 つのグループに存在する列の数が表示されます。 以下のスクリーンショットでは、概要テーブルに 2014 年のアラバマ州についての行が 3 つあることがわかります。 これにより、列 Mean(Data) に異なるウイルスが混在します。

Re: カラーコードトップ5残念ながら、すべてのウイルスを分離する必要があります。 各ウイルスを独自のテーブルとして持つ方がよいでしょうか?
Re: カラーコードトップ5この問題に対処する 1 つの方法は、各ウイルスを個別のデータ テーブルに分離することです。次に、各ウイルス データ テーブルに対してスクリプトを実行します。
また、私が提供したスクリプトにウイルスを州と年の集計とともに追加するだけで、ウイルスごとに個別に計算を実行することもできます。
Re: カラーコードトップ5これで完璧ですね。 もう一つ質問があります。 データ列とカラーグループ列を結合して、データ列のデータ/数値は表示されますが、そのセルの色はカラーグループの色になるようにする方法はありますか?
Re: カラーコードトップ5Scripting Index では、次の定義と例が提供されています。全てJSL で使用できるほとんどの関数とメッセージ。ここでは、必要なことを行うための簡単な JSL を示します。ただし、独自の答えを見つけられるように、Scripting Index に慣れる必要があります。それは私たち全員にとって進行中のプロセスです。
dt:color group << color cells("green", dt << get rows where(:color group =="Bottom"));
dt:color group << color cells("yellow", dt << get rows where(:color group =="Middle"));
dt:color group << color cells("red", dt << get rows where(:color group =="Top"));
dt:color group << color cells("black", dt << get rows where(:color group =="U.S."));Re: カラーコードトップ5答えは、テーブル (および色) を何に使用するかによって少し変わるかもしれません。 純粋なスクリプト オプションがあります。または、これを対話的に行うこともできます。列の 1 つに値の色がある場合、その列を選択し、[行/色] または [列でマーク] に移動します。

次に、メニューから「OK」を押します。

これにより、これらの色が行の状態として設定されます

それらの行を右クリックし、行の状態ごとに色を選択します

これで、すべての行がその色で揃いました。

次に、その色にしたくない列をすべて選択し、選択したセルの 1 つを右クリックして色を白にします。

ただし、この方法とセルの色を使用すると、行の行状態として特定の色が表示されます(白を使用して行状態の色を上書きします)。

また、JMP はこれらのアクションを記録してスクリプトを提供できないようです。
編集:
スクリプト作成に関するいくつかのアイデアは、以下から見ることができます。 JSL を使用して、数値列の値によってテキスト形式の列の色のグラデーションを設定するにはどうすればよいですか?しかしあなたの状況は少し異なります
編集2:
ここでは、スクリプトを使用してセルに色を付けるもう少し高度な方法を示します。
Names Default To Here(1);
dt = Open("$DOWNLOADS/All Items 2014-2021 Stacked.jmp");
color_property = Column(dt, "Color Group") << Get Property("Value Colors");
values = dt[0, "Color Group"];
For Each({color_prop}, color_property,
value = Arg(color_prop, 1);
color = Arg(color_prop, 2);
color_rows = dt << Get Rows Where(:Color Group == value);
:Data << color cells({color, color_rows});
);
Re: カラーコードトップ5ありがとう!!! これで完璧になりました!!!
Re: カラーコードトップ5問題が解決されつつあることを嬉しく思います。次の手順を実行して、タスクを必ず完了してください。
- コードをカットアンドペーストしてアプリケーションに貼り付けるだけではありません。提供されている JSL とその内容を必ず時間をかけて学習してください。学ぶJSL 内のさまざまな項目がどのように機能するか。
- 受け取った回答に戻り、問題を解決した回答に「解決策」としてマークを付け、今後の読者が可能な限り効率的に回答に到達できるようにします。