从 jmp 中的等高线图中获取线扫描数据你好,
我有等高线图,我想看看数据如何沿着等高线图中的一条线变化。
例如,等高线图是薄膜厚度等高线图。 我想看看我在等高线图上任何地方画的线的厚度如何变化。
这可能吗?
瑜伽
回复:从 jmp 中的等高线图中获取线扫描数据瑜伽,
有多种方法可以将脚本添加到数据表中。我认为 JMP 可以使它更容易。 仅供参考,此脚本仅显示了添加脚本的 3 种方法。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
myScript = Expr(Distribution( Column( :Height, :Weight ), By( :sex )) );
//---hard coded method below
//dt << New Script("New Script",Distribution( Column( :Height, :Weight ), By( :sex )) );
//--or use the syntax below that uses expression substitution then Eval() to run it
//Eval( Substitute(Expr( dt << New Script( "New Script", _xx ) ), Expr(_xx), NameExpr(myScript) ) );
//---or use Eval Expr() that does the substitution and Eval() that runs it
Eval( Eval Expr(dt << New Script("New Script", Expr(NameExpr( myScript) ) ) ) );
回复:从 jmp 中的等高线图中获取线扫描数据嗨,摩根,
您为我的示例发送的示例代码中有一些(次要)语法错误。 我花了一些时间(我对 jmp 脚本非常陌生)来修复它,但它最终像我想要的那样工作。 再次感谢您的帮助。 我在下面为其他可能需要它的人附上了修改后的脚本。
我还意识到,如果脚本存储在数据表中,我不需要指定任何(长)位置路径。 奇怪的是,我无法将新的脚本文件保存到数据表中。 它必须保存为单独的 jsl 文件。 为了解决这个问题,我在我的数据表中打开一个已经存在的脚本并修改它以输入新的脚本。
回复:从 jmp 中的等高线图中获取线扫描数据嗨,摩根,
再次感谢。 非常感谢。 将相应地修改我的脚本。
瑜伽
回复:从 jmp 中的等高线图中获取线扫描数据我有半导体数据方面的经验,所以我理解想要对每个晶圆或每个结构进行分析。从你的陈述“它适用于一个对象。 如果有多个对象,我不知道如何分组。“我假设您的文件有一个名为晶圆和/或结构的列。
首先,数据表不需要命名为 dt。 我确实改变了变量引用的用途,但调用所有这些表 dt 可能会导致更大脚本中的混乱。语法和拼写错误后的名称冲突是脚本无法正常工作的最常见原因。
对于您的脚本,如果您对按顺序放置在日记中的所有图表都满意,那么我建议您修改脚本以处理“按组”。 这个脚本下面还有更多内容。
subp = dt << Bivariate ( Y(:Name( "Rdson" )), X(:X), By(:Wafer) );
xx = subp << Find (Outline Box ("Bivariate ?") );
//this returns all outline boxes with Bivariate in the title, should be one for each wafer
//This adds the title but maintains the By Wafer = xxxxxxx
For(i=1, i <=nitems(xx), i++,
ttl = xx[i] << get title;
p = Contains( ttl, "By"); //find the position of the word By
xx[i] << Set Title(" Rdson Contour at Y==0 " || substr(ttl, p, 100) ); //something large
);但是,还有其他方法可以让您布局报告,以便您可以并排查看每个晶片和每个扫描。下面是一个使用大类的例子。 我附上了一个脚本(见文件)。 没有测试表,我不能保证它会起作用,但您可能想尝试一下。
Names default to here(1);
open("$sample_data/Big Class.jmp");
nw = new window("example", lineupbox(ncol(2), Distribution(
Continuous Distribution( Column( :weight, Horizontal Layout(1) ) ),
Histograms Only,
By( :age, :sex )
)));
nw << journal window();
回复:从 jmp 中的等高线图中获取线扫描数据嗨,摩根(和所有人),
我设法让它适用于我的数据表。 我也意识到,我不需要一直通过等高线图。 我可以制作一个所有 X==0 的子表,并沿 Y 获取数据,反之亦然,我喜欢的任何其他坐标也是可能的。 您提供的脚本帮助很大。
现在,我试图弄清楚如何跨多个对象做到这一点。 我的示例脚本如下。 它适用于一个对象。 如果有多个对象,我不知道如何分组。 对此有任何意见吗? 我会很感激的。
在我的脚本中,现在我获取了一个对象的所有数据。 但是,我必须在另一个对象上重复相同的操作。 所有对象都属于一类,比如“晶圆”或“结构”......
名称默认为此处(1);
dt = open("C:/Users/yoga_***/***.jmp");
dt << 选择位置 (:Y == 0);
dt << 子集(输出表(“子集”),选定的行(1),选定的列(0));
dt = 数据表(“子集”);
subp = dt << 双变量 ( Y(:Name( "Rdson" )), X(:X) );
report(subp)[OutlineBox(1)] << Set Title("Rdson Contour at Y==0" );
subp << 日志窗口();
subp << 关闭窗口();
dt = open("C:/Users/yoga_***/***.jmp");
dt << 选择位置 (:X == 0);
dt << Subset(Output Table("Subset2"),Selected Rows(1), Selected Columns (0));
dt = 数据表(“子集 2”);
subp = dt << 双变量 ( Y(:Name( "Rdson" )), X(:Y) );
report(subp)[OutlineBox(1)] << Set Title("Rdson Contour at X==0" );
subp << 日志窗口();
subp << 关闭窗口();
dt = open("C:/Users/yoga_***/***.jmp");
dt << 选择哪里 (0.95 < :X/:Y < 1.05);
dt << Subset(Output Table("Subset3"),Selected Rows(1), Selected Columns (0));
dt = 数据表("Subset3");
subp = dt << 双变量 ( Y(:Name( "Rdson" )), X(:X) );
report(subp)[OutlineBox(1)] << Set Title("Rdson Contour at X==Y");
subp << 日志窗口();
subp << 关闭窗口();
关闭(数据表(“子集”),NoSave);
关闭(数据表(“Subset2”),NoSave);
关闭(数据表(“Subset3”),NoSave);
回复:从 jmp 中的等高线图中获取线扫描数据嗨,摩根,
这正是我想要的。 我通常在没有脚本的情况下执行此子例程。 这个脚本有帮助。
现在,我试图弄清楚如何将此脚本集成到我当前的需求中。
会及时向大家发布。
回复:从 jmp 中的等高线图中获取线扫描数据嗨,摩根,
感谢您的详细回复。 我会尽量让你(所有人)都知道。
回复:从 jmp 中的等高线图中获取线扫描数据有多种方法可以获得轮廓的横截面视图。但是,它可能不是其他程序中可用的内置语句或单个语句。
我附上了一个名为ContourCrossSection.jsl . 它使用 JMP 样本数据 Little Pond.jmp 数据表示池塘的深度。 它创建一个轮廓、一个横截面视图(使用 X 拟合 Y、双变量)和 3 个横截面的比较视图(使用 Graph Builder)。
如果您不熟悉 JSL,只需运行该程序即可。 我已经在 JMP12、13 和 14 中对其进行了测试。 关键是您可以从等高线图选项中获得的选项。在 JMP 计数图上选择红色的 traingle 菜单,选择节省,然后选择生成网格.指定 X 和 Y 切片的数量并生成 xygrid。
这里有一些其他的想法:
- 如果样本点的数量不密集,请考虑使用神经网络或其他平台创建更平滑的曲线。 有时三角测量会关闭。 使用函数有多种方法可以获得横截面。
- 学习使用带网格的轮廓分析器。 然后从菜单中添加一个本地数据过滤器,将 Y 或 X 的范围设置为 50 <=Y <= 50.1 这都是交互式的。 探查器中还有其他选项。
- 如果您可以从您有权访问的另一个程序轻松获取此信息,则可以访问 R、MatLab、SAS 以及在 JMP14 中使用 JSL 和运行程序的 Python。
希望这可以帮助。
回复:从 jmp 中的等高线图中获取线扫描数据嗨,卡梅伦,
不,不是平滑样条。 除非我遵循获取数据子集的曲折方式,否则现在似乎无法获得它。
不过在 jmp 中添加该功能应该不会太难。 它通常存在于许多软件中,这些软件在 XY 中映射参数以给出等高线图。 我们可以玩看看它如何沿着我们通过轮廓绘制的任何线变化。
回复:从 jmp 中的等高线图中获取线扫描数据您是在描述薄膜的横截面,如沿幅材向下方向的特定切片处的横向幅材剖面吗? 如果是这样,我认为没有任何方法可以从轮廓分析器中获得它。
您是否需要像平滑样条一样绘制一条在该横截面中的数据点之间进行插值的线?
回复:从 jmp 中的等高线图中获取线扫描数据嗨,卡梅伦,
不完全是。 当我从等高线图的一端到另一端画一条线时,我正在寻找参数变化。 我将尝试以最好的方式在这里说明它。
我有一个薄膜厚度在基材上变化的等高线图。 然后,我可以选择任何给定的 X(或 Y)并从一端到另一端画一条线。 假设,我想要 Y=0 处的所有点,但 X 从 -50 变化到 +50。 我画了一条从-50到+50的水平线。 然后,我想看看这条线的厚度如何变化,并在侧面显示一个图。
我可以以曲折的方式做到这一点。 取数据集。 然后,取 Y=0 的所有数据点的另一个子集。 然后绘制厚度与 X 的关系(对于所有 Y=0)。
我希望这可以在我在任何地方画一条线时在后台完成。
回复:从 jmp 中的等高线图中获取线扫描数据你好@瑜伽,
您是说要在等高线图上绘制数据点吗?如果是这样,请参阅此线程: https://community.jmp.com/t5/Discussions/Adding-specific-data-points-with-labels-to-a-contour-plot/mp/52455