こんにちは、みんな、
一見簡単そうに見える質問ですが、答えが見つかりません。 棒グラフを作成しましたが、各棒グラフの塗りつぶしの色を個別にカスタマイズしたいと考えています。 グラフは、y 軸にコスト、x 軸に自動車メーカーを示し、各自動車メーカーには 2 年が表示されます。 その理由は、年 (2017 年と 2018 年) に応じて一般的な塗りつぶしの色を持っていますが、特定の車メーカーの異なる色を強調表示したいためです (たとえば、ホンダ 2017 は 2017 年の残りの車メーカーとは異なり、ホンダ 2018 は残りの2018年自動車メーカーとは異なります)。
グラフ構築またはコードを通じてこれを簡単に行う方法はありますか?
前もって感謝します。
以下のスクリプトは Jim のスクリプトを拡張したものです。 @txnelson 、優れた提案。JSL を使用して特定の色を設定し、レジェンドモデル。
Names Default to Here(1);
dt = open("$sample_data/big class.jmp");
gb = dt << Graph Builder(
show control panel(0),
Variables(
X( :age ),
X( :sex, Position( 1 ) ),
Y( :height ),
Color(
Transform Column(
"Transform[age]",
Character,
Nominal,
Formula( (Char( :age ) || " ") || :sex )
)
)
),
Elements( Bar( X( 1 ), X( 2 ), Y, Legend( 12 ) ) )
);
//note Item ID count begins with 0
gb << SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
//12,
Properties( 0, {Fill Color( 5 )}, Item ID( "12 F", 1 ) ),
Properties( 1, {Fill Color( 5 )}, Item ID( "12 M", 1 ) ),
Properties( 2, {Fill Color( 20 )}, Item ID( "13 F", 1 ) ),
Properties( 3, {Fill Color( 20 )}, Item ID( "13 M", 1 ) ),
Properties( 4, {Fill Color( 6 )}, Item ID( "14 F", 1 ) ),
Properties( 5, {Fill Color( 6 )}, Item ID( "14 M", 1 ) ),
Properties( 6, {Fill Color( 27 )}, Item ID( "15 F", 1 ) ),
Properties( 7, {Fill Color( 27 )}, Item ID( "15 M", 1 ) ),
Properties( 8, {Fill Color( 26 )}, Item ID( "16 F", 1 ) ),
Properties( 9, {Fill Color( 26 )}, Item ID( "16 M", 1 ) ),
Properties( 10, {Fill Color( 12 )}, Item ID( "17 F", 1 ) ),
Properties( 11, {Fill Color( 12 )}, Item ID( "17 M", 1 ) )
)}
)
);

解決策の 1 つは、年列と車列を連結した新しい列を作成することです。
結合 = char(:年) || " " || :車;
次に、この新しい列をグラフ ビルダーの色の列として使用します。 その後、それぞれのバーを好きな色にすることができます。以下は、Big Class サンプル データ テーブルを使用した同様の例です。

時々同じ問題が発生します。
列 A に 6 つの要素、列 B に 2 つの要素がある場合でも、6x2 の個別のサブセットを手動で色付けするのは楽しいです。
ただし、正しい色を手動で割り当てるのに時間がかかる場合もあります。
応用例:
- 列 A を色として使用します
- 列 B =excluded() を使用して、除外されたポイントを灰色にします
このようなアプリケーションに関しては、 GraphBuilder: ドロップゾーンを上書きする強力な機能になる可能性があります。