大家早上好/下午好。
我觉得这应该非常直接,但我正在努力弄清楚如何做到这一点。在 OriginPro 中,这真的很容易,但我第一次必须使用 JMP 来工作,所以我对这个程序完全是新手。
问题:我有两组 XRD 数据。一台来自旧机器,一台来自全新机器。数据在相同的域中进行,从大约 -6000 到 +3000 弧秒。但是,两台机器之间数据点的间距是不同的。
所以我有这两个数据集,我需要将它们叠加在同一个图上。x(以弧秒为单位的角度)和 y(以 CPS 为单位的强度)的定义相同。
对于这两个数据集,主要反射发生在大约 0 弧秒(如预期)。附件是来自两台机器(D1 和 V1)的数据图。
我尝试使用 Graph Builder 将这些数据添加到同一个图表中,将一个数据叠加在另一个图表上。我曾尝试将两个 x 域拖到 x 轴上,但这不会导致所需的行为。D1 不是针对“它的”x 绘制的,而是 V1 是针对“它的”x 绘制的,而是仅使用 x 范围之一绘制两个数据集。因此,这会导致其中一个数据集被压缩或拉伸,具体取决于使用的 x。附件是图形生成器中绘制的两个数据集,您可以看到问题。
我想要的是固定 x 范围,并针对 x 轴绘制多个 y。
鉴于我还是 JMP 的新手,交互式解决方案会更可取,但如果脚本是唯一可能的方法,那么我也会接受。
在此先感谢您的帮助。
图表的数据必须来自单个数据表。因此,您需要做的是获取 2 个数据表并将它们连接或连接在一起,以便最终得到 1 个 X 列和 2 个 Y 列。然后你需要做的就是打开Graph Builder并将X列拖到X放置区,然后选择两个Y列并将它们拖到Y放置区
用
表=>加入
或者
表=>连接
将数据放在一起。确保两个数据表中的 X 列名称相同,而 Y 列名称不同。
这是一种方法:
- 为每个数据集添加一列,例如“机器”。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 )}
)
)
);数据都在同一个数据表中,但重申一下,问题是它们不共享相同的 x 值集,因此您的答案不起作用。
这是有效的,但这是一个非常糟糕的黑客。
这真的是唯一的方法吗?真的没有更简单的方法来完成像这样基本的事情吗?