如何绘制列的最后 N 个值?大家好,
我对 JSL 还比较陌生,所以在我前进的过程中构建我的脚本代码。
我正在尝试将 M 值列中最后 25 个数据点的图形添加到控制图窗口,例如列(M-25)到(M)。
我正在考虑修改图表构建器脚本来做到这一点:
Control Chart Builder(
Size( 534, 454 ),
Show Two Shewhart Charts( 0 ),
Show Control Panel( 0 ),
Show Limit Summaries( 0 ),
Show Capability( 0 ),
Variables( Y( :Name( "MyColumn" ) ) ),
Chart(
Points( Statistic( "Individual" ) ),
Limits( Sigma( "Moving Range" ) ),
Warnings( Test Beyond Limits( 1 ) )
),
SendToReport(
Dispatch(
{},
"graph display 1 title",
TextEditBox,
{Set Text( "Last 25 Observations" )}
),
Dispatch( {}, "MyColumn Limit Summaries", OutlineBox, {Close( 1 )} )
)
)我遇到的问题是如何仅选择要显示的最后 N 个值(N 可以是 25 或 30 或 100)。 我使用其他编程语言(如 Igor 或 Matlab)的经验并没有转化为 JSL,以了解如何仅绘制列中的数据子集。
如果可能的话,我更喜欢让它绘制数据与行索引,就像在控制图中一样,我知道叠加图可以做到这一点,但我也喜欢让平均值显示在图表中。 我宁愿不将数据绘制为 X 拟合 Y。
谢谢!
回复:如何绘制列的最后 N 个值?你好@戈德温,
每种特定情况都略有不同,可能需要针对手头的具体情况对代码进行轻微修改。 如果您可以共享您正在使用的数据表和代码,这可能会帮助我和该线程上的其他人更好地解决您正在尝试做的事情的细节。
谢谢!,
DS
回复:如何绘制列的最后 N 个值?你能分享你用来控制图表最后N列的确切代码吗? 我没有运气进行修改。
回复:如何绘制列的最后 N 个值?谢谢!回复:如何绘制列的最后 N 个值?Names DefaultToHere(1);
// Open a table and give it a table reference ('dt')
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Select the data you do not want, and exclude them
dt << select where( :sex == "F" );
dt << hide and exclude;
// Clear the selections
dt << clear select;
// Create the chart, only none excluded/hidden rows will be displayed
dt << Graph Builder(
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 6 ) ), Smoother( X, Y, Legend( 7 ) ) )
);回复:如何绘制列的最后 N 个值?谢谢! 不确定我是否正确提交了我的问题。 我想绘制给定大数据集的图表。 但是我需要检查一个特定的列是否满足条件,然后如果满足条件,则考虑相应的行来绘制图形。 我想通过jsl脚本做到这一点。 你能帮助我,因为我是初学者。 谢谢!
回复:如何绘制列的最后 N 个值?这似乎是与线程主题不同的问题,但也许可以尝试这样的事情:
Names DefaultToHere(1);
// Open a table and give it a table reference ('dt')
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Get a list of all the columns in the table
cols = dt << getColumnNames("String");
// Define any logical condition that identifies one or more columns by its name
targetCols = {};
for(c=1, c<=NItems(cols), c++, if(Contains(cols[c], "gh"), InsertInto(targetCols, cols[c])));
// Make a plot using'taregtCols' as the y variables
biv = dt << OneWay(X(:sex), Y(Eval(targetCols)));回复:如何绘制列的最后 N 个值?您好先生,我想绘制给定大数据集的图表。 但是我需要检查一个特定的列是否满足条件,然后考虑相应的行来绘制图形。 我想通过jsl脚本做到这一点。 你能帮助我,因为我是初学者。 谢谢!回复:如何绘制列的最后 N 个值?如果条件满足给定的特定列,如何从数据表中绘制数据?回复:如何绘制列的最后 N 个值?你好@txnelson ,谢谢你的建议。 我最终稍微更改了代码,以便它查找空条目而不仅仅是非零条目。 你的方法奏效了,我只需要稍微适应我的具体情况。
再次感谢!
lastNmiss = 0;
For( ii = N Rows( dt ), ii >= 1, ii--,
If( IsMissing(dt:weight[ii])!=1, lastNmiss++ );
If( lastnmiss == 8, Break() );
);
lastNmiss = N Row( dt ) - ii;
n = N Row( dt );
biv = dt << Bivariate(
Y( :weight ),
X( :height ),
Where( Row() > (n - lastnmiss) )
);
回复:如何绘制列的最后 N 个值?这是对脚本的简单修改, @Mark_Bailey写,找到具有最后 x 个非零值的行
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt:weight[38] = 0;
last n = 0;
For( i = N Rows( dt ), i >= 1, i--,
If( :weight[i] > 0, last n++ );
If( last n == 5, Break() );
);
last n = N Row( dt ) - i;
n = N Row( dt );
biv = dt << Bivariate(
Y( :weight ),
X( :height ),
Where( Row() > (n - last n) )
);
回复:如何绘制列的最后 N 个值?@Mark_Bailey谢谢您的帮助。
我现在正在尝试修改该代码,以便绘制最后 N 个非零值。 我在一列中有几行可能缺少值,并且只想绘制那些具有条目的行。 现在,如果过去 N(在我的情况下为 25)中只有一两行非零,那么它只绘制那一两行。
非常感谢您的帮助/反馈。 谢谢!
回复:如何绘制列的最后 N 个值?工作! 谢谢。
不得不稍微修改细节,但工作。
回复:如何绘制列的最后 N 个值?这是一个可以调整的双变量和大类示例:
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
last n = 5;
n = N Row( dt );
biv = dt << Bivariate(
Y( :weight ),
X( :height ),
Where( Row() > (n - last n) )
)
很简单。