JMP Pro 12.2 액세스 위반 오류 (스크립트 포함)다양한 도구의 결함 밀도를 비교하는 다양한 데이터를 볼 수있는 사용자 지정 보고서를 작성하려고합니다. 때로는 표시 할 도구가 20 개 이상 많아서 스플라인 맞음과 혼동을 일으킬 수 있습니다. 범례를 통해 도구가 선택되었을 때 스플라인을 강조하는 방법을 찾았지 만이 함수는 JMP에서 간헐적 인 충돌을 일으 킵니다.
오류를 재현 할 수있는 스크립트가 있지만 간헐적입니다 - 단순히 범례의 다양한 요소를 선택하고 키를 사용하여 모든 요소의 선택을 취소하십시오.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Consumer Preferences.jmp" );
dt << Color or Mark by Column( "Gender" );
change_lines = Function( {table, ns},
{default local},
Wait( 0.1 );
If( ns:nit > 1,
If( Is Scriptable( ns:dla ),
sd = ns:dla << Summary( Group( Column( ns:dla, ns:tool ) ), "Private" );
Current Data Table( sd );
sm = 0;
For( k = 1, k <= ns:nit, k++,
sm += Selected( Row State( k ) )
);
For( i = 1, i <= ns:nit, i++,
c = Color To HLS( Color Of( Row State( i ) ) );
s = Selected( Row State( i ) );
If( Is Scriptable( c ) & N Items( c ) == 3,
If( sm != 0,
If( s == 1,
ns:biv << (Curve[i] << Line Color( HLS Color( c[1], 0.5 - 0.5 * c[2], c[3] ) ) << Line Width( 4 )),
ns:biv << (Curve[i] << Line Color( HLS Color( c[1], 0.5 + 0.5 * c[2], c[3] ) ) << Line Width( 1 ))
),
ns:biv << (Curve[i] << Line Color( HLS Color( c[1], c[2], c[3] ) ) << Line Width( 3 ))
)
);
);
Close( sd, nosave );
)
);
);
New Window( "Explore the SegFault",
Outline Box( "Bivariate and Oneway",
H List Box(
biv = Bivariate(
Y( :Name( "Salary" ) ),
X( :Name( "Birth Year" ) ),
SendToReport( Dispatch( {}, "Bivar Plot", FrameBox, {Frame Size( 400, 300 ), Marker Size( 3 )} ) )
);
biv << Group By( "Gender" );
biv << Fit Spline( 1, standardized );
bivr = biv << Report();
bivr[Outline Box( 1 )] << Set Title( "Salary vs. Birth Year" );
bivr[Picture Box( 2 )] << Delete;
N = N Items( Associative Array( Column( dt, "Gender" ) ) << Get Keys );
For( i = 1, i <= N, i++,
biv << (Curve[i] << Report( 0 ))
);
biv;,
ow = Oneway(
Y( :Name( "Salary" ) ),
X( :Name( "Gender" ) ),
All Graphs( 0 ),
Means and Std Dev( 1 ),
Plot Quantile by Actual( 1 ),
Line of Fit( 0 ),
Box Plots( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 ),
Connect Means( 1 ),
X Axis Proportional( 0 ),
Points Jittered( 1 ),
Points Spread( 1 ),
SendToReport(
Dispatch(
{"Normal Quantile Plot"},
"Oneway QuantilePlot",
FrameBox,
{Frame Size( 350, 300 ), Marker Size( 3 ), Row Legend(
Column( dt, "Gender" ),
Marker( 1 ),
Marker Theme( "Paired" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
owr = ow << Report();
owr[Table Box( 1 )] << Set Selectable Rows();
owr[Outline Box( 1 )] << Set Title( "Proability Plot" );
legend = owr[String Col Box( 2 )];
legend << Sib Append( Number Col Box( "Mean", owr[Number Col Box( 2 )] << Get ) );
legend << Sib Append( Number Col Box( "Number", owr[Number Col Box( 1 )] << Get ) );
owr[Lineup Box( 1 )] << delete;
owr[Picture Box( 3 )] << delete;
owr[Outline Box( 2 )] << delete;
owr[Outline Box( 2 )] << Set Title( "" );
ns = New Namespace();
ns:nit = N;
ns:dla = dt;
ns:tool = "Gender";
ns:biv = biv;
owr[Number Col Box( 2 )] << Set Row Change Function( Function( {this}, change_lines( this, ns ) ) );
ow;
)
)
);
이 오류가 발생하지 않도록 할 수있는 일이 있습니까? 초기 대기 기능을 포함 시켰습니다. 선택되지 않은 마커를 변경하는 범례 선택 항목에 문제가있는 것 같습니다 (선택되지 않은 마커가 희미 해짐). 아마도 내 기능 또한 대체 업데이트 중에 디스플레이를 변경하려고합니다. 대기 시간을 늘리면 오류 빈도가 줄어들지 만 상황을 완전히 완화하지는 못합니다.
감사!
재 : JMP 프로 12.2 액세스 위반 오류 (스크립트 포함)JMP 기술 지원부는이 문제점에 대한 결함을 열었으며 향후 JMP 버전에서 해결 될 것으로 기대합니다.
재 : JMP 프로 12.2 액세스 위반 오류 (스크립트 포함)모든 도움을 주셔서 감사합니다! 요소를 삭제하지 않고 오류없이 스크립트를 작동하도록 제안했습니다. 나는 요소를 지우는 것을 좋아하지 않았지만, 그들을 숨기는 편리한 방법을 알지 못했습니다.
여기 원래 스크립트가 완전히 수정되도록 수정되었습니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Consumer Preferences.jmp" );
dt << Color or Mark by Column( "Gender" );
change_lines = Function( {table, ns},
{default local},
flag = 0;
lst = As List( table << Get Selected Rows() );
For( i = 1, i <= ns:nit, i++,
c = Color To HLS( Color Of( Column( ns:rs, "rsd" )[i] ) );
If( N Items( As List( Loc( lst, i ) ) ) == 0,
ns:biv << (Curve[i] << Line Color( HLS Color( c[1], 0.5 + 0.5 * c[2], c[3] ) ) << Line Width( 1 )),
ns:biv << (Curve[i] << Line Color( HLS Color( c[1], 0.5 - 0.5 * c[2], c[3] ) ) << Line Width( 4 ));
flag = 1;
);
);
If( flag == 0,
For( i = 1, i <= ns:nit, i++,
c = Color To HLS( Color Of( Column( ns:rs, "rsd" )[i] ) );
ns:biv << (Curve[i] << Line Color( HLS Color( c[1], c[2], c[3] ) ) << Line Width( 3 ));
)
);
);
New Window( "Explore the SegFault",
Outline Box( "Bivariate and Oneway",
H List Box(
ns = New Namespace();
ns:biv = Bivariate(
Y( :Name( "Salary" ) ),
X( :Name( "Birth Year" ) ),
SendToReport( Dispatch( {}, "Bivar Plot", FrameBox, {Frame Size( 400, 300 ), Marker Size( 3 )} ) )
);,
ns:ow = Oneway(
Y( :Name( "Salary" ) ),
X( :Name( "Gender" ) ),
All Graphs( 0 ),
Means and Std Dev( 1 ),
Plot Quantile by Actual( 1 ),
Line of Fit( 0 ),
Box Plots( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 ),
Connect Means( 1 ),
X Axis Proportional( 0 ),
Points Jittered( 1 ),
Points Spread( 1 ),
SendToReport(
Dispatch(
{"Normal Quantile Plot"},
"Oneway QuantilePlot",
FrameBox,
{Frame Size( 350, 300 ), Marker Size( 3 ), Row Legend(
Column( dt, "Gender" ),
Marker( 1 ),
Marker Theme( "Paired" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
ns:owr = ns:ow << Report();
ns:owr[Table Box( 1 )] << Set Selectable Rows();
ns:owr[Outline Box( 1 )] << Set Title( "Proability Plot" );
legend = ns:owr[String Col Box( 2 )];
legend << Sib Append( Number Col Box( "Mean", ns:owr[Number Col Box( 2 )] << Get ) );
legend << Sib Append( Number Col Box( "Number", ns:owr[Number Col Box( 1 )] << Get ) );
ns:owr[Lineup Box( 1 )] << delete;
ns:owr[Picture Box( 3 )] << delete;
ns:owr[Outline Box( 2 )] << delete;
ns:owr[Outline Box( 2 )] << Set Title( "" );
ns:dla = dt;
ns:tool = "Gender";
ns:biv = ns:biv;
ns:rs = ns:dla << Summary( Group( Column( ns:dla, ns:tool ) ), "Private" );
ns:rs << New Column( "rsd", Row State, Set Formula( Color State( Color Of( Row State() ) ) ) );
ns:nit = N Items( legend << Get );
ns:biv << group by( Column( ns:dla, ns:tool ) );
ns:biv << fit spline( 1, standardized );
ns:bivr = ns:biv << Report();
ns:bivr[Outline Box( 1 )] << Set Title( "Trend Chart" );
ns:bivr[Picture Box( 2 )] << Visibility( "Collapse" );
isdone = 0;
For( i = 1, i <= ns:nit, i++,
ns:biv << (Curve[i] << Report( 0 ));
ns:bivr[List Box( 4 + i )] << Visibility( "Collapse" );
);
ns:owr[Number Col Box( 2 )] << Set Row Change Function( Function( {this}, change_lines( this, ns ) ) );
)
)
);재 : JMP 프로 12.2 액세스 위반 오류 (스크립트 포함)플랫폼 보고서에서 내용을 삭제하면 문제가 발생할 수 있다고 덧붙입니다. 내가 제안 할게:
- 플랫폼 옵션을 사용하십시오 (조지아가 그랬던 것처럼)
ow << Means and Std Dev(0);
- 플랫폼 옵션을 사용할 수없는 경우 상자 << 공개 설정 ( '축소') 메시지를 삭제하는 대신 이 동작은 IfBox () 레이아웃 및 그리기를 위해 보고서의 일부를 건너 뜁니다.
충돌을 피하는 것 외에도 이러한 접근법의 한 가지 이점은 스크립트에서 기억된다는 것입니다. 대화 형으로 플랫폼 중 하나를 수정하고 스크립트 저장 스크립트 창을 사용하면 사용자 지정 내용이 스크립트에 포함됩니다. 필터를 추가하려는 경우이 작업이 중요 할 수도 있습니다. 그러면 필터가 플랫폼에서 다시 생성됩니다.
재 : JMP 프로 12.2 액세스 위반 오류 (스크립트 포함)나는 접근 위반을 재현 할 수 있었고 스크립트와 블로그 참조로 JMP에게 보고서를 보냈다.
나는 M을 선택한 다음 F를 선택했고 나는 버려졌습니다.
나는 데이비드에 동의한다.
이상한 구문을 발견하고 스크립트를 약간 변경하고 몇 가지 주석을 달았습니다.
이전에 게시 된 스크립트 및 간단한 스크립트의 수정 사항을 첨부했습니다. 범례와 요약 테이블 및 행 상태 핸들러를 사용합니다. 스크립트가 수행 한대로 선택되지 않은 스플라인을 "사라지게"하지 않습니다.
내가 보장 할 수는 없지만 액세스 위반은 발생하지 않습니다. 응답이 여전히 발생하면 응답하십시오.
재 : JMP 프로 12.2 액세스 위반 오류 (스크립트 포함)가치가있는 경우 액세스 위반을 재현하지 못했습니다 (기다림 여부와 상관없이). 나는 12.2를 포함하여 다양한 버전으로 시도했다.
이 문제가 발생했다면 리팩터링 코드를 살펴볼 것입니다. 특히, 새 창 기능을 사용하여 표시 상자를 렌더링해야하며 JMP가 JSL 삽입을 허용 할 수 있지만 필요하지는 않으며 문제가 될 수도 있습니다. 예를 들어, 새 창 정의 이후에 수행 할 바이브 보고서에 전송 된 모든 메시지.