如何将多个数据添加到同一个图表中?大家早上好/下午好。
我觉得这应该非常简单,但我正在努力弄清楚如何做到这一点。在 OriginPro 中,这确实很容易,但我必须第一次使用 JMP 来工作,所以我对这个程序完全是新手。
问题:我有两组 XRD 数据。一台来自旧机器,一台来自全新机器。数据是在同一域中获取的,范围从大约 -6000 到 +3000 角秒。然而,两台机器之间的数据点间距不同。
所以我有这两个数据集,我需要将它们叠加在同一个图上。x(以角秒为单位的角度)和 y(以 CPS 为单位的强度)的定义相同。
对于这两个数据集,主反射发生在大约 0 角秒(如预期)。附件是两台机器(D1 和 V1)的数据图。
我尝试使用图形生成器将这些数据添加到同一个图形中,将一个数据叠加在另一个之上。我尝试将两个 x 域拖动到 x 轴,但这不会产生所需的行为。两个数据集都仅使用其中一个 x 范围来绘制,而不是根据“它的”x 绘制 D1,并且根据“它的”x 绘制 V1。因此,这会导致其中一个数据集被压缩或拉伸,具体取决于使用哪个 x。附件是在图形生成器中绘制的两个数据集,您可以看到问题。
我想要的只是固定 x 范围,并针对 x 轴绘制多个 y。
鉴于我对 JMP 还很陌生,交互式解决方案会更好,但如果脚本是唯一可能的方式,那么我也会接受。
在此先感谢您的帮助。
V1V1V1
D1D1D1
D1+V1D1+V1D1+V1
质量和工艺工程回复:如何将多个数据添加到同一个图表中?你好,
我经常使用 2 组数据(X1/Y1、X2/Y2),它们都在不同的列中,并将它们叠加到一个 XY 图中。目前,我最终在一张图中有 4 个图(X1/Y1、X1/Y2、X2/Y1、X2/Y2,我只需要 X1/Y1 和 X2/Y2)。我总是要花半天时间才能把情节弄清楚。
感谢 JDA,我很高兴知道我并不孤单。
如果 JMP 能够在版本 18 中为此创建一个交互式解决方案,我真的很感激。
回复:如何将多个数据添加到同一个图表中?我已经编写了一个脚本,应该可以满足您的要求。它以一个包含四列的表开始:x1、y1、x2、y2。

问题是您需要将 x2 和 y2 堆叠在 x1 和 y1 下面,并添加一个列来区分两组数据。这是您想要最终得到的结果:

这是脚本。请注意,前几行定义了一个与您的表类似的表,由变量 dt 引用。
// Create an example table
dt = New Table( "Untitled 2", Add Rows( 4 ),
New Column( "x1", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 2, 3, 4] ) ),
New Column( "y1", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [4, 2, 3, 1] ) ),
New Column( "x2", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [3, 5, 7, 8] ) ),
New Column( "y2", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [5, 2, 8, 2] ) )
);
// For your case you would point the dt variable to your own table.
// dt = data table("My Data Table");
nr = nrows(dt);
// Make the new table
newdt = New Table( "Untitled 5",
Add Rows( 2 * nr ),
New Column( "x", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "y", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "Machine", Character, "Nominal")
);
// In the next section of code, replace x1 and y1 with your column names for the first x-y pair
// Start with X1, Y1
for (i = 1, i <= nr, i++,
newdt:x[i] = dt:x1[i];
newdt:y[i] = dt:y1[i];
newdt:Machine[i] = "A";
);
// In this section of code, replace x2 and y2 with your column names for the second x-y pair
// Now add X2, Y2
for (i = (nr + 1), i <= 2 * nr, i++,
newdt:x[i] = dt:x2[i - nr];
newdt:y[i] = dt:y2[i - nr];
newdt:Machine[i] = "B";
);
// Create the graph
newdt << Graph Builder(
Size( 886, 452 ),
Show Control Panel( 0 ),
Variables( X( :x ), Y( :y ), Overlay( :Machine ) ),
Elements( Line( X, Y, Legend( 13 ) ), Points( X, Y, Legend( 14 ) ) )
);
要运行此代码,请将其复制到剪贴板。在 JMP 中,按 CTRL-T 打开一个新的脚本窗口,粘贴代码,然后按 CTRL-R 运行它。

我更愿意使用更简单的解决方案表 > 堆栈,但无法弄清楚如何实现这一点(这是对所有 JMP 用户的挑战!)。这个脚本是下一个最好的东西。
回复:如何将多个数据添加到同一个图表中?确定的解决方案就是实现这一目标的方法。 我提供了另一个示例来表明“两组数据”不需要具有相同的 x 值。
我相信您遇到的主要问题是如何正确设置数据。 从变量的角度思考。 你有一个 X 变量(我认为它叫做 Omega)。 你有 Y 值(我相信它叫做 Velox??)。 您有第三个变量,称为 Machine。 您的数据表应该有三列,每个变量一列,就像@pmroz显示。
他的解决方案显示了 JMP 脚本,因为这是在该论坛中演示解决方案的最简单方法。 但一旦数据设置正确,交互步骤就非常简单。 这是一个示例表:

转到图形 > 图形生成器。
将 Omega 拖至 X 轴。 将 Velox 拖至 Y 轴。 将机器拖至叠加字段。
我单击了平滑器按钮以删除平滑器。
按住 Shift 键并选择线元素按钮来添加它。

根据您的计数方式,一旦您通过考虑变量正确设置了数据,就需要 5 个步骤。
回复:如何将多个数据添加到同一个图表中?这可行,但这是一个非常糟糕的黑客行为。
这真的是唯一的方法吗?真的没有更简单的方法来完成像这样基本的事情吗?
回复:如何将多个数据添加到同一个图表中?数据都在同一个数据表中,但重申一下,问题是它们不共享同一组 x 值,因此您的答案不起作用。
回复:如何将多个数据添加到同一个图表中?这是表格:

这是结果图:

回复:如何将多个数据添加到同一个图表中?这是一种方法:
- 向每个数据集添加一列,例如“机器”。V1 表中的值为 V1,P1 表中的值为 P1。
- 现在连接两个表。
- 运行图形生成器并将 Omega 拖至 X,将 Y 列拖至 Y
- 将机器拖至叠加
下面是一些代码,展示了如何执行此操作:
dt = New Table( "Test Combo", Add Rows( 6 ),
New Column( "Omega", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [1, 2, 3, 1, 2, 3] ) ),
New Column( "Y", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [1, 4, 10, 2, 7, 20] ) ),
New Column( "Machine", Character, "Nominal",
Set Values( {"D1", "D1", "D1", "V1", "V1", "V1"} ) )
);
dt << Graph Builder( Size( 527, 452 ), Show Control Panel( 0 ),
Variables( X( :Omega ), Y( :Y ), Overlay( :Machine ) ),
Elements( Line( X, Y, Legend( 13 ) ) ),
SendToReport( Dispatch( {}, "Y", ScaleBox,
{Scale( "Log" ), Format( "Best", 12 ), Min( 0.7 ),
Max( 20.3648979591837 ), Inc( 1 ), Minor Ticks( 1 )}
)
)
);回复:如何将多个数据添加到同一个图表中?图表的数据必须来自单个数据表。因此,您需要做的就是获取 2 个数据表并将它们连接或连接在一起,这样您最终就会得到 1 个 X 列和 2 个 Y 列。然后您需要做的就是打开图形生成器并将 X 列拖动到 X 放置区域,然后选择两个 Y 列并将它们拖动到 Y 放置区域
使用
表=>连接
或者
表格=>连接
将数据放在一起。确保两个数据表中的 X 列名称相同,Y 列名称不同。