JSL 脚本:用于绘制数据表所有列的图形生成器大家好,
长期 JMP 用户(jsl 脚本新手),第一次发帖。 我将不胜感激任何帮助!
我正在编写一个执行两件事的脚本:
1.打开一个文本文件,导入数值数据,然后保存数据表,以便稍后打开。
2. 使用图形生成器一次绘制所有“y 轴”列
我对第 1 项没有任何问题,因此不需要对此发表评论。 第 2 项给我带来了问题。 我还没有找到一种方法可以在一张图表上同时绘制所有 y 轴列。
数据表具有 1 个 x 轴数据列(要在生成的图形的 x 轴上使用的数据),但它可以具有 1 个或多列需要位于图形的同一 y 轴上的数据列。 我试图直观地比较这些数据,使用一张图表绘制所有数据非常有用。 我可能可以将数据堆叠到一个 x 和一个 y 数据集中,并使用第三列用于叠加,但我不想这样做。
有任何想法吗?
回复:JSL 脚本:图形生成器绘制数据表的所有列谢谢吉姆,
这非常有效。 我很感谢您温柔地鼓励我阅读该手册——我会再次阅读该手册,并希望保留其中的另外百分之几。 不过,我并不总是从手册中学习,这就是我来到这里的原因。 老实说,我花了大约 5 个小时才能弄清楚你做了什么,所以我很欣赏你的专业方法,因为它节省了我宝贵的时间,并向我展示了一些我将来可以使用的新东西。 干杯
回复:JSL 脚本:图形生成器绘制数据表的所有列- 您需要阅读脚本指南
- 我为您提供了一个脚本,它向您展示了 JSL 需要是什么样子才能创建您的图表,或者至少是我对您想要的图表的解释。
- 我对交互式运行它的建议是,为您提供一种按照您希望的方式生成图形的方法,然后您所需要做的就是让 JMP 生成图形的脚本,然后该脚本会向您显示需要什么被创建以生成图表。
- 我附加了一个脚本,该脚本接受半导体能力数据表,然后使用所有连续列,生成叠加图表。第一个连续列用作 X 列,其余的用作多个 Y 列。
- 脚本中使用的所有函数都记录在脚本索引中。然而,学习各种工具和结构将使您能够创建独立创建的脚本。
- 当您在理解 JSL 中的某些组件时遇到困难时,社区讨论组可以为您提供帮助
- 从输入动态数据表构建分析、图表等的示例可在社区站点的讨论中找到。人们需要查看已经发布的讨论以寻求解决方案
-
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// Get the column names in the data table
colList = dt << get column names( string, continuous );
// Start building the command required that when run will create
// the desired chart
theExpr = "Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( :" || colList[1] || " ),
Y( :" || colList[2] || " )";
// Repeat the operation for the remaining columns in the list
For( i = 3, i <= N Items( colList ), i++,
theExpr = theExpr || ",Y( :" || colList[i] || ", Position( 1 ) )"
);
// Add in the element descriptions
theexpr = theExpr || "),
Elements(
Points(
X";
// Repeat for the remaining Y columns
For( i = 2, i <= N Items( colList ), i++,
theExpr = theExpr || ",Y(" || Char( i ) || ")"
);
theExpr = theExpr || ",Legend( 5 ));";
// Execute the generated commands
Eval( Parse( theexpr ) );回复:JSL 脚本:图形生成器绘制数据表的所有列嗨吉姆,
感谢您的及时回复! 您的帖子准确地描述了我希望脚本执行的操作,不,我不是以交互方式执行此操作。 该图需要使用脚本创建,以便当我运行脚本时:
1.打开一个文本文件并将所有数据加载到数据表中,保存数据表(我已经完成了这部分脚本,没有问题)。
2. 创建所有 y 数据列与一个 x 数据列的单个图(这是我需要帮助的)
数据文件可以有任意数量的 y 数据列(具有不同的名称),但始终只有一个 x 数据列。 我已经编写的加载器脚本加载所有数据并命名列。在文件加载到数据表中之前,我不知道有多少 y 数据列。
最初的想法是将列列表发送到图形生成器中的“Y”变量,但我不确定这是否可能。 也接受其他建议,但我想保留一个 x 数据列的数据表结构,其中包含许多 y 数据列(即不想堆叠数据)。
-戴夫
回复:JSL 脚本:图形生成器绘制数据表的所有列如果您以交互方式运行图形生成器,则要将多个列绘制为 Y 轴,您所需要做的就是抓取要绘制图形的所有列,并将它们拖动到 Y 放置区域。

执行此操作的 JSL 如下
names default to here(1);
dt=open("$SAMPLE_DATA/semiconductor capability.jmp");
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( :NPN1 ),
Y( :PNP1 ),
Y( :PNP2, Position( 1 ) ),
Y( :NPN2, Position( 1 ) ),
Y( :PNP3, Position( 1 ) ),
Y( :IVP1, Position( 1 ) ),
Y( :PNP4, Position( 1 ) ),
Y( :NPN3, Position( 1 ) ),
Y( :IVP2, Position( 1 ) )
),
Elements(
Points(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Y( 8 ),
Legend( 5 )
),
Smoother(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Y( 8 ),
Legend( 6 )
)
)
);