こんにちは、みんな、
私の質問は 2 つの部分に分かれており、理想的には #1 は解決できますが、#2 がわからなくても問題ありません。 すべての助けに感謝します!
1. 各凡例内のカテゴリの 1 つを、jmp が割り当てるデフォルトの色ではなく黒色にする方法を教えてください。
例: クライスラーを最初のレジェンドを黒、2 番目をタウンカー ブラック、3 番目を 90 ブラック、4 番目を 2 ブラック、5 番目をバン ブラックにしますか?
2. for ループを使用して各変動グラフに凡例を追加するにはどうすればよいですか。 同様に、私はそれが特定のパターンに従うことを望んでいます。
例: この場合、d エアバッグの凡例はメーカー、d&p エアバッグの凡例はモデル、マニュアル ベルトは年式、電動ベルトはドア、パッシブ ベルトはサイズです。
Variability Chart(
SendToByGroup( {:"D/P"n == "Driver", :Protection == "d airbag"} ),
Y( :Head IC ),
SendToByGroup( {:"D/P"n == "Driver", :Protection == "d airbag"}, Y( :Head IC ) ),
SendToByGroup(
{:"D/P"n == "Driver", :Protection == "d&p airbags"},
Y( :Head IC )
),
SendToByGroup(
{:"D/P"n == "Driver", :Protection == "manual belts"},
Y( :Head IC )
),
SendToByGroup(
{:"D/P"n == "Driver", :Protection == "Motorized belts"},
Y( :Head IC )
),
SendToByGroup(
{:"D/P"n == "Driver", :Protection == "passive belts"},
Y( :Head IC )
),
SendToByGroup(
{:"D/P"n == "Passenger", :Protection == "d airbag"},
Y( :Head IC )
),
SendToByGroup(
{:"D/P"n == "Passenger", :Protection == "d&p airbags"},
Y( :Head IC )
),
SendToByGroup(
{:"D/P"n == "Passenger", :Protection == "manual belts"},
Y( :Head IC )
),
SendToByGroup(
{:"D/P"n == "Passenger", :Protection == "Motorized belts"},
Y( :Head IC )
),
SendToByGroup(
{:"D/P"n == "Passenger", :Protection == "passive belts"},
Y( :Head IC )
),
X( :Make, :Model ),
Show Range Bars( 0 ),
Show Cell Means( 0 ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
By( :"D/P"n, :Protection ),
SendToByGroup(
{:"D/P"n == "Driver", :Protection == "d airbag"},
SendToReport(
Dispatch(
{"Variability Gauge D/P=Driver, Protection=d airbag",
"Variability Chart for Head IC"},
"Variability Chart",
FrameBox,
{Row Legend(
Make,
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
),
SendToByGroup(
{:"D/P"n == "Driver", :Protection == "d&p airbags"},
SendToReport(
Dispatch(
{"Variability Gauge D/P=Driver, Protection=d&p airbags",
"Variability Chart for Head IC"},
"Variability Chart",
FrameBox,
{Row Legend(
Model,
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
),
SendToByGroup(
{:"D/P"n == "Driver", :Protection == "manual belts"},
SendToReport(
Dispatch(
{"Variability Gauge D/P=Driver, Protection=manual belts",
"Variability Chart for Head IC"},
"Variability Chart",
FrameBox,
{Row Legend(
Year,
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
),
SendToByGroup(
{:"D/P"n == "Driver", :Protection == "Motorized belts"},
SendToReport(
Dispatch(
{"Variability Gauge D/P=Driver, Protection=Motorized belts",
"Variability Chart for Head IC"},
"Variability Chart",
FrameBox,
{Row Legend(
Doors,
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
),
SendToByGroup(
{:"D/P"n == "Driver", :Protection == "passive belts"},
SendToReport(
Dispatch(
{"Variability Gauge D/P=Driver, Protection=passive belts",
"Variability Chart for Head IC"},
"Variability Chart",
FrameBox,
{Row Legend(
Size,
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
),
SendToByGroup(
{:"D/P"n == "Passenger", :Protection == "d airbag"},
SendToReport(
Dispatch(
{"Variability Gauge D/P=Passenger, Protection=d airbag",
"Variability Chart for Head IC"},
"Variability Chart",
FrameBox,
{Row Legend(
Make,
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
),
SendToByGroup(
{:"D/P"n == "Passenger", :Protection == "d&p airbags"},
SendToReport(
Dispatch(
{"Variability Gauge D/P=Passenger, Protection=d&p airbags",
"Variability Chart for Head IC"},
"Variability Chart",
FrameBox,
{Row Legend(
Model,
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
),
SendToByGroup(
{:"D/P"n == "Passenger", :Protection == "manual belts"},
SendToReport(
Dispatch(
{"Variability Gauge D/P=Passenger, Protection=manual belts",
"Variability Chart for Head IC"},
"Variability Chart",
FrameBox,
{Row Legend(
Year,
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
),
SendToByGroup(
{:"D/P"n == "Passenger", :Protection == "Motorized belts"},
SendToReport(
Dispatch(
{"Variability Gauge D/P=Passenger, Protection=Motorized belts",
"Variability Chart for Head IC"},
"Variability Chart",
FrameBox,
{Row Legend(
Doors,
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
),
SendToByGroup(
{:"D/P"n == "Passenger", :Protection == "passive belts"},
SendToReport(
Dispatch(
{"Variability Gauge D/P=Passenger, Protection=passive belts",
"Variability Chart for Head IC"},
"Variability Chart",
FrameBox,
{Row Legend(
Size,
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
)
)


値の色の列プロパティを使用して、この非常にスクリプトの多いソリューションよりも簡単なソリューションがあることを願っていますが、これでうまくいくかもしれません
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Cars.jmp");
aa_protection_legend = Associative Array("Year"); // default value Year as I won't write all of these
aa_protection_legend["d airbag"] = "Make";
aa_protection_legend["d&p airbags"] = "Model";
cols_to_color = Associative Array();
cols_to_color["Make"] = "Chrysler";
cols_to_color["Model"] = "Town Car";
vars = dt << Variability Chart(
SendToByGroup({:"D/P"n == "Driver", :Protection == "d airbag"}),
Y(:Head IC),
SendToByGroup({:"D/P"n == "Driver", :Protection == "d airbag"}, Y(:Head IC)),
SendToByGroup({:"D/P"n == "Driver", :Protection == "d&p airbags"}, Y(:Head IC)),
SendToByGroup({:"D/P"n == "Driver", :Protection == "manual belts"}, Y(:Head IC)),
SendToByGroup({:"D/P"n == "Driver", :Protection == "Motorized belts"}, Y(:Head IC)),
SendToByGroup({:"D/P"n == "Driver", :Protection == "passive belts"}, Y(:Head IC)),
SendToByGroup({:"D/P"n == "Passenger", :Protection == "d airbag"}, Y(:Head IC)),
SendToByGroup({:"D/P"n == "Passenger", :Protection == "d&p airbags"}, Y(:Head IC)),
SendToByGroup({:"D/P"n == "Passenger", :Protection == "manual belts"}, Y(:Head IC)),
SendToByGroup({:"D/P"n == "Passenger", :Protection == "Motorized belts"}, Y(:Head IC)),
SendToByGroup({:"D/P"n == "Passenger", :Protection == "passive belts"}, Y(:Head IC)),
X(:Make, :Model),
Show Range Bars(0),
Show Cell Means(0),
Std Dev Chart(0),
Points Jittered(1),
By(:"D/P"n, :Protection)
);
dt_colors = New Table("colors", New Column("color", Numeric, Ordinal, Values(1::1000)), invisible);
Column(dt_colors, "color") << Set Property("Value Colors", "JMP Default");
colors = Column(dt_colors, "color") << Get Property("Value Colors");
Close(dt_colors, no save);
set_color_property = function({dt, col_name, black_val}, {uniq, color_idx, property_list},
Summarize(dt, uniq = by(eval(col_name)));
color_idx = 1;
property_list = "";
For Each({val}, uniq,
If(val == black_val,
colorval = "\!"" || val || "\!" = 0";
,
colorval = "\!"" || val || "\!" = " || char(Arg(colors[color_idx], 2));
color_idx++;
);
property_list = property_list || colorval || ", ";
);
property_list = "{" ||Regex(property_list, ", $", "", GLOBALREPLACE) ||"}";
Eval(EvalExpr(Column(dt, col_name) << Set Property("Value Colors",
Expr(Parse(property_list))
)));
);
For Each({{key, val}}, cols_to_color,
set_color_property(dt, key, val);
);
For Each({var, idx}, vars,
rep = Report(var);
framebox = rep[Frame Box(1)];
cur_protection = Regex(rep << get title, ".*Protection=(.+)", "\1");
framebox << Row Legend(
Eval(aa_protection_legend[cur_protection]),
Color(1),
Color Theme(""),
Marker(0),
Marker Theme(""),
Continuous Scale(0),
Reverse Scale(0),
Excluded Rows(0)
);
);
