大家好,
我的問題分為兩部分,理想情況下#1 可以解決,如果你無法弄清楚#2 也沒關係。 我感謝任何和所有的幫助!
1. 如何使每個圖例中的類別之一為黑色,而不是 jmp 分配的預設顏色。
範例:將第一個圖例中的克萊斯勒顏色設為黑色,第二個圖例中的城市汽車顏色設為黑色,第三個圖例中的90 黑色,第四個圖例中的2 黑色,第五個圖例中的貨車顏色?
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)
);
);
