早上好,
我在 Y 轴上叠加了 3 个变量。
是否可以添加一条垂直线,连接 X 轴上每个标识符的最小值和最大值?我们应该能够选择垂直线的颜色、粗细和透明度。
请参阅图片中圆圈内的示例。
真挚地
您可以尝试使用范围误差线

或者您可以添加间隔条形图并禁用“中间”值(这可能需要一些额外的计算/列)

当然还有使用图形脚本的脚本选项,这更复杂

以下是脚本选项的一个可能示例
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Formula Column(Operation(Category("Aggregate"), "Minimum"), Columns(:height), Group By(:age));
dt << New Formula Column(Operation(Category("Aggregate"), "Maximum"), Columns(:height), Group By(:age));
gb = dt << Graph Builder(
Size(525, 448),
Show Control Panel(0),
Variables(
X(:age),
Y(:height),
Y(:"Maximum[height][age]"n, Position(1)),
Y(:"Minimum[height][age]"n, Position(1))
),
Elements(Points(X, Y(1), Y(2), Y(3), Legend(3), Summary Statistic("Mean")))
);
segs = Report(gb)[FrameBox(1)] << Find Segs();
ys = [];
xs = {};
For Each({seg}, segs,
If(seg << Class Name == "MarkerSeg",
ys = ys |/ (seg << get y values)`;
Insert Into(xs, seg << get x values);
)
);
For Each({{ymin, ymax, x}}, Across(V Min(ys), V Max(ys), xs[1]),
Eval(EvalExpr(
Report(gb)[FrameBox(1)] << Add Graphics Script(
"Back",
Pen Color("Purple");
Pen Size(20);
Transparency(0.2);
V Line(Expr(x), Expr(ymin), Expr(ymax));
);
));
);
Write();
这个“简单”的例子不适用于过滤器。
然后是标记绘制表达式,您可以在其中控制图例的颜色和透明度以及绘制表达式的宽度
查看更多...
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Formula Column(Operation(Category("Aggregate"), "Minimum"), Columns(:height), Group By(:age));
dt << New Formula Column(Operation(Category("Aggregate"), "Maximum"), Columns(:height), Group By(:age));
gb = dt << Graph Builder(
Size(746, 818),
Show Control Panel(0),
Variables(
X(:age),
Y(:height),
Y(:"Maximum[height][age]"n, Position(1)),
Y(:"Minimum[height][age]"n, Position(1))
),
Elements(
Points(X, Y(1), Y(2), Y(3), Legend(3), Summary Statistic("Mean")),
Points(X, Y(1), Legend(4), Summary Statistic("Mean"))
),
Local Data Filter(Add Filter(columns(:age), Display(:age, N Items(6)))),
SendToReport(
Dispatch({}, "400", ScaleBox,
{Legend Model(
4,
Properties(
0,
{Line Color(35), Transparency(0.2)},
Item ID("Mean(height)", 1)
)
)}
)
)
);
frame = Report(gb)[FrameBox(1)];
seg = (frame << FindSeg(Marker Seg(4)));
seg << Set Marker Draw Expr(
Function({this seg, this row, x, y, size, row state},
size = 0.1;
Rect(
x - size,
:"Maximum[height][age]"n[this row],
x + size,
:"Minimum[height][age]"n[this row],
1
);
);
);
