如何在 JMP 中执行多边形向外偏移大家好,
我想问一下,JMP 中是否可以执行多边形向外偏移?如果可以,请教一下具体操作。
假设我有一个六边形的坐标,我想在六边形周围绘制一个距离为 10 的缓冲区。我该怎么做?
非常感谢
自动化和脚本回复:如何在 JMP 中执行多边形向外偏移原始六边形来自哪里?
您是使用 JMP Graph Box 制作的吗?
更具体的细节将非常有帮助
回复:如何在 JMP 中执行多边形向外偏移你好@txnelson ,
通过保存轮廓线,从轮廓图中获取多边形

保存轮廓线后,我绘制了 X 和 Y 轴的图表。请问如何绘制沿多边形轮廓线的偏移量?非常感谢。

回复:如何在 JMP 中执行多边形向外偏移JMP 提供使用“添加图形脚本”向任何图形输出添加附加图形的功能。脚本索引提供了如何添加附加对象的文档和示例。
帮助=>脚本索引
JSL 中提供了一整套图形基元。
下面是直接从脚本指南中获取的一个简单示例,用于说明此功能
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = Bivariate(
Y( :weight ),
X( :height ),
FitLine
);
rbiv = biv << report;
framebox = rbiv[frame box( 1 )];
framebox <<
Add Graphics Script(
Transparency( 0.5 );
Fill Color( {1.0, 0.5, 0.0} );
Polygon( [60, 72, 57], [75, 120, 120] );
);

回复:如何在 JMP 中执行多边形向外偏移你好@txnelson
就像你的图表一样,我们手动将数字放入图形中来绘制多边形。有什么办法可以通过脚本来实现吗?例如,
我们得到了 X 和 Y 坐标的列表,并有一个距离。我该如何通过脚本进行计算?
另外,我还想问一个问题,当我绘制轮廓图并保存轮廓时,JMP会生成带有X和Y坐标的表格。
我遇到的问题在于,当我使用诸如 In Polygon (a,b, x matrix, y matrix) 之类的语法时,它返回的结果不正确。即使有些点在多边形内部,JMP 也会将这些点返回到多边形外部。
在使用 In Polygon 之前,我需要执行排序或处理数据吗?
谢谢
回复:如何在 JMP 中执行多边形向外偏移您是否尝试过绘制所得到的多边形并且它看起来是否像您所期望的那样?
回复:如何在 JMP 中执行多边形向外偏移我认为,当您说“我们手动将数字放入图表”时,您是在暗示 JSL 是针对特定多边形“硬编码”的。没错,但这并不意味着它必须硬编码。JSL 是一种完整的脚本语言。定义您想要生成的任何多边形的数值都可以使用 JSL 计算,然后在 Polygon() 函数中使用它来绘制您想要显示的多边形。我怀疑,如果您想要绘制一个围绕要显示的点 10 个单位的多边形,那么您可能需要循环遍历所有值,计算从所有 x,y 值的平均值到特定点的距离,然后将该距离加 10 个单位,然后计算该值的 x,y 点。诸如此类。但这在 JSL 中都是可以实现的。下面是一个简单的示例,演示了如何绘制一个包含最大 x 和 y 点的多边形。
Names Default To Here( 1 );
dt=Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = Bivariate(
Y( :weight ),
X( :height ),
FitLine
);
rbiv = biv << report;
framebox = rbiv[frame box( 1 )];
framebox <<
Add Graphics Script(
Transparency( 0.5 );
Fill Color( {1.0, 0.5, 0.0} );
// Find the max X point and it's y value
maxX = col max(:height);
maxXyvalue = :weight[(dt << get rows where(:height==maxX))[1]];
minX = col min(:height);
minXyvalue = :weight[(dt << get rows where(:height==minX))[1]];
maxY = col max(:weight);
maxYxvalue = :Height[(dt << get rows where(:weight==maxY))[1]];
minY = col min(:weight);
minYxvalue = :Height[(dt << get rows where(:weight==minY))[1]];
polygon((maxX||minX||minYxvalue||maxYxvalue)`, (maxXyvalue || minXyvalue || minY ||maxY)` );
);
