新的平行 Y 轴设置背后的主要思想是生成左侧具有多个坐标轴的叠加图,如JMP 19 图形生成器新增功能中所示。
如果某些坐标轴位于图表的右侧,例如一个坐标轴位于左侧,一个坐标轴位于右侧,则同样的原理也适用:
Open( "$SAMPLE_DATA/Functional Data/Anodic Bond.jmp" );
Graph Builder(
// Parallel Axes( "Y Only" ),
Variables( X( :Order ), Y( :Piston Force ), Y( :Charge, Position( 1 ), Side( "Right" ) ) ),
Elements( Line( X, Y( 1 ) ), Line( X, Y( 2 ) ) ),
Local Data Filter(
Add Filter(
columns( :Wafer Id ),
Where( :Wafer Id == 11 )
)
)
);
uncomment Parallel Axes( "Y Only" ) and the new functionality will help you to get the right colors:

更有趣:左右两侧都有多个值:

Graph Builder(
Parallel Axes( "Y Only" ),
Variables(
X( :Order ),
Y( :Flow ),
Y( :Voltage, Position( 1 ), Side( "Right" ) ),
Y( :Piston Force ),
Y( :Charge, Position( 2 ), Side( "Right" ) )
),
Elements( Position( 1, 1 ), Line( X, Y( 1 ) ), Line( X, Y( 2 ) ) ),
Elements( Position( 1, 2 ), Line( X, Y( 1 ) ), Line( X, Y( 2 ) ) ),
Local Data Filter(
Add Filter(
columns( :Wafer Id ),
Where( :Wafer Id == 11 ),
Display( :Wafer Id, N Items( 15 ), Find( Set Text( "" ) ) )
)
)
);
remove the Parallel Axes( "Y Only" ) to see how the graph is generated:
note that the different traces have to be in separate graphs at first (e.g. 流动 and 活塞力 fo the left side) -
rather than being merged into the same graph.
The same 逻辑 holds for "全部 parallel axes on the left":
不要自行将轨迹合并到同一张图中;首先,它们必须位于彼此重叠的不同图中。
As soon as the user activates Parallel Axes , it's JMP who will merge the traces - 并将坐标轴分割开来。
专家模式: Let's see what happens when a user merges 2 traces into the same graph (and adds some other traces on top) ...
After activating Parallel Axes, the 2 merged traces will use同一轴 while the other traces get their own axis.
I hope this explanation helps you to understand the general logic.

<BR />"Y Only"?
so, there will be仅限 X and X 和 Y as well ? - but maybe in a next version of JMP ...
side discussion of DACH 用户组 2025 年会议 - 印象与资源 / JMP19 -- JMP愿望清单
这是一个用于测试功能的玩具脚本:
Open( "$SAMPLE_DATA/Reliability/GaAs Laser.jmp" );
gb = Graph Builder(
Size( 542, 598 ),
Show Legend( 0 ),
Parallel Axes( "Y Only" ),
Graph Spacing( 4 ),
Variables( X( :Current ), Y( :Hours, Side( "Right" ) ), Y( :Hours, Side( "Right" ) ), Overlay( :Batch ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 45 ) ) ),
Elements( Position( 1, 2 ), Smoother( X, Y, Legend( 44 ) ) ),
SendToReport(
Dispatch( {}, {:Current}, ScaleBox, {Label Row( Label Orientation( "Vertical" ) )} ),
Dispatch( {}, "", ScaleBox,
{Label Row(
{Automatic Tick Marks( 0 ), Show Major Grid( 0 ), Show Major Labels( 0 ), Show Major Ticks( 0 ),
Show Minor Ticks( 0 )}
)}
),
Dispatch( {}, "", ScaleBox( 2 ),
{Label Row(
{Automatic Tick Marks( 0 ), Show Major Grid( 0 ), Show Major Labels( 0 ), Show Major Ticks( 0 ),
Show Minor Ticks( 0 )}
)}
),
Dispatch( {}, {:Hours}, ScaleBox,
{Scale( "Log" ), Min( 10 ), Max( 10000 ), Inc( 1 ), Minor Ticks( 1 ),
Add Ref Line( 24, "Solid", "Black", "day", 1 ), Add Ref Line( 168, "Solid", "Black", "week", 1 ),
Add Ref Line( 720, "Solid", "Black", "month", 1 ), Add Ref Line(
2160, "Solid", "Black", "quarter", 1
), Label Row(
{Label Orientation( "Vertical" ), Show Major Grid( 0 ), Show Major Labels( 0 ),
Show Major Ticks( 0 ), Show Minor Labels( 0 ), Show Minor Ticks( 0 )}
)}
),
Dispatch( {}, {:Hours}, ScaleBox( 2 ),
{Scale( "Log" ), Min( 10 ), Max( 10000 ), Minor Ticks( 1 ),
Label Row( {Label Orientation( "Vertical" ), Show Minor Grid( 1 ), Show Minor Labels( 0 )} )}
),
Dispatch( {}, {:Hours, "Y title"}, TextEditBox, {Rotate Text( "Left" )} ),
Dispatch( {}, {:Hours, "Y 1 title"}, TextEditBox, {Rotate Text( "Left" )} )
)
);
report(gb)[GraphBuilderBox(1)] << save picture( "$TEMP/graph.png", "png" );
img = Open( "$TEMP/graph.png", "png" );
img << rotate(90) << scale(0.5);
New window("graph", img)
它在图形生成器中创建一个带有辅助“X”轴的图表:

- ……实际上,这不是真正的“X”轴——它是Y轴,而且图表是旋转过的。
(请注意Y轴标签方向错误)
- why is the x axis blue?
This is a conflict between "Parallel Axes" and Overlay.
why just parts of the axes? I don't know.
实际上,最好关闭平行坐标轴,并在图表的相对两侧使用标签。
我非常喜欢这个模式——如果它也适用于 X 轴,我会经常使用它。

gb = Graph Builder(
Size( 530, 473 ),
Graph Spacing( 4 ),
Show Legend( 0 ),
Variables(
X( :Current ),
Y( :Hours ),
Y( :Hours, Position( 1 ), Side( "Right" ) ),
Group X( :Batch, Show Title( 0 ) )
),
Elements( Smoother( X, Y( 1 ), Legend( 40 ) ), Points( X, Y( 2 ), Legend( 41 ) ) ),
SendToReport(
Dispatch( {}, {:Hours}, ScaleBox,
{Scale( "Log" ), Min( 10 ), Max( 10000 ), Inc( 1 ), Minor Ticks( 1 ),
Add Ref Line( 24, "Solid", "Black", "day", 1 ), Add Ref Line( 168, "Solid", "Black", "week", 1 ),
Add Ref Line( 720, "Solid", "Black", "month", 1 ), Add Ref Line(
2160, "Solid", "Black", "quarter", 1
), Label Row(
{Label Orientation( "Vertical" ), Show Major Grid( 0 ), Show Major Labels( 0 ),
Show Major Ticks( 0 ), Show Minor Labels( 0 ), Show Minor Ticks( 0 )}
)}
),
Dispatch( {}, {:Hours}, ScaleBox( 2 ),
{Scale( "Log" ), Min( 10 ), Max( 10000 ), Minor Ticks( 1 ),
Label Row( {Label Orientation( "Vertical" ), Show Minor Grid( 1 ), Show Minor Labels( 0 )} )}
),
Dispatch( {}, {:Hours, "Y title"}, TextEditBox, {Set Text( "" )} ),
Dispatch( {}, {:Hours, "Y r title"}, TextEditBox, {Rotate Text( "Left" )} )
)
);
有人可能会认为,对于这种“标签模式”,使用参考线菜单中的“相反侧”来获取标签要容易得多:

但每个人都讨厌在这种模式下出现的“克隆人”:

@hogi wrote:
... conflict between "Parallel Axes" and Overlay.
当前模式下也存在这种冲突,从而减少了可能的应用案例数量。
启用平行轴后,当用户同时启用叠加层时,叠加层会控制颜色,所有参数的颜色都会同步(通过轴标签的相同颜色可见)。

Open( "$SAMPLE_DATA/Functional Data/Anodic Bond.jmp" );
Graph Builder(
Size( 957, 548 ),
Parallel Axes( "Y Only" ),
Graph Spacing( 4 ),
Variables( X( :Order ), Y( :Flow ), Y( :Voltage ), Overlay( :Wafer Id ) ),
Elements( Position( 1, 1 ), Line( X, Y ) ),
Elements( Position( 1, 2 ), Line( X, Y) ),
Local Data Filter(
Add Filter(
columns( :Wafer Id ),
Where( :Wafer Id == {8, 9, 10, 11} ),
Display( :Wafer Id, N Items( 15 ), Find( Set Text( "" ) ) )
)
)
);
诀窍:使用 Overlay Encoding = Style,

并为同一参数的所有曲线分配不同的颜色:

由于这必须手动完成,因此可能非常耗时。一个简单的技巧:使用应用商店中的“图表构建器工具栏/图表构建器远程控制”:
Another Trick: open the legend menu, select a bock of legend entries and apply the color via right click.
[when you try the same in the legend itself, the new color will be assigned to all parameters]