JMP 스크립트 진행 표시기<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕,
이 포럼에서 검색하고 JMP 스크립팅 책을 파헤치면서 대부분 진행 스크립트가 작동하도록 관리했습니다.내가 싫어하는 유일한 것은 세로(y) 축에 숫자가 있다는 것입니다. 이것들을 끌 수 있습니까? 나는 이것을 할 방법을 찾을 수 없었다.그래프 box() 이외의 것을 사용해야 하는지 확실하지 않지만 이에 대한 지식은 상당히 제한적입니다.
dlgStatus = new window("변환 진행률",
dlg_gb = 그래프 상자(
제목("전환 진행률"),
프레임 크기( 200, 30),
xscale(0,100),
yscale(0, 1), // <---- y 축 값이 표시되지 않도록 끄는 방법은 무엇입니까?
yaxis(주요 틱 표시(0), 보조 틱 표시(0)),
xname("% 완료"),
이름("")
)
);
dlgStatus[FrameBox(1)] << 그래픽 스크립트 추가({Fill Color("blue"),Rect(0,1,50,0,1)}); // 위의 xscale에 표시된 100%까지의 스케일에서 50%. 프레임 크기()의 픽셀 수로 크기가 조정되지 않습니다.
dlgStatus[FrameBox(1)] << 그래픽 스크립트 추가({Fill Color("blue"),Rect(0,1,75,0,1)}); // 위의 xscale에 표시된 100%까지의 스케일에서 75%.
// 위는 테스트일 뿐입니다.50과 75는 내 실제 스크립트에서 루프 인덱스 변수를 루프 수로 나눈 것입니다. 각 루프 반복에서 한 번 실행됩니다.
dlgStatus << closewindow();
감사해요.
Re: JMP 스크립트 진행 표시기스크립트가 단일 루프를 실행하는 경우 SDF1의 예를 사용하고 전체적으로 prog 변수를 업데이트할 수 있습니다. 시간을 절약하고 모든 반복을 업데이트하지 않으려면 반복 변수의 mod() 함수를 사용하여 10 또는 50(정확히 기억하지 않음)마다 업데이트합니다. 내가 코드를 만든 후 지난 11년 동안 JMP가 이를 개선했을지 모르지만 처음에는 수백에서 수천 개의 열을 반복하면서 반복할 때마다 막대를 업데이트하기 위해 스크립트 속도가 느려졌습니다.
스크립트가 반복되지 않고 여러 작업을 통해 크런치하는 경우 스크립트 전체에서 진행률 표시줄을 업데이트해야 할 수 있습니다. 예를 들어 각각 30초가 걸리는 작업이 10개 있는 경우 각 단계에서 진행률을 10%씩 증가시킵니다. 이것은 코드의 각 섹션이 실행되는 데 걸리는 시간을 결정하기 위한 수동 프로세스입니다.
위의 조합이 있는 경우 창의력을 발휘할 수 있지만 어느 쪽이든 스크립트에서 실행 시간이 어떻게 분배되는지 파악한 다음 그에 따라 진행 상황을 그리는 것은 사용자에게 달려 있습니다. JMP는 이를 자동으로 수행하지 않으므로 진행 상황에 따라 막대를 업데이트하도록 코드를 스크립팅해야 합니다.
이 모든 것은 더 빠르고 더 느린 컴퓨터가 있더라도 각 코드 청크가 실행하는 데 비교적 비례하는 총 실행 시간이 소요될 것이라고 가정합니다. 이는 꽤 합리적입니다.
Re: JMP 스크립트 진행 표시기내 프로그램이 약 5분 동안 오랫동안 실행되고 다른 컴퓨터에서 시간이 다르게 실행되는 경우 실제 실행 대기 시간을 기반으로 해당 진행률 표시줄을 만들려면 어떻게 해야 합니까?
Re: JMP 스크립트 진행 표시기내 생각에는 @pmroz 이 경우 안전한 간단한 직접 솔루션을 제공합니다. 그러나 << 삭제 메시지를 사용하여 표시 트리에서 표시 상자 개체를 제거하는 것은 다른 경우에 위험할 수 있습니다. 이러한 이유로 적어도 두 가지 다른 접근 방식이 있습니다. 일반적으로 << Visibility() 메시지를 사용하여 표시 상자의 가시성을 수정할 수 있습니다. 이 경우 축소 인수를 사용하십시오. 다른 하나는 Axis Box 개체에 대한 고유한 프로토콜입니다. 여기에서 예를 참조하십시오.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :weight ), X( :height ), Fit Line );
axis box = Report( biv )[AxisBox( 1 )];
axis box << Remove Axis Label( "weight" );
axis box << Show Major Labels( 0 );
axis box << Show Major Ticks( 0 );
Re: JMP 스크립트 진행 표시기안녕 @mikedriscoll 그리고 @pmroz ,
긴 모델링 실행에서 Y에서 반복 번호 X를 실제로 제공하는 유사한 진행 창을 생성하고 싶었기 때문에 최근에 이 게시물을 발견했습니다. 어쨌든, 나는 귀하의 솔루션을 가져와 수정하고 작업 중이던 솔루션에 추가했습니다. 여기 ., 이제 진행률 표시줄과 실제 숫자가 모두 표시됩니다. 좋아요. 사용자의 기본 설정에 맞게 수정해야 할 수도 있지만 좋은 시작입니다. 토론을 시작해주셔서 감사합니다!
Names Default To Here( 1 );
i = 1;
imax = 100;
dlgStatus = New Window( "Overall Modeling Progress",
V List Box(
dlg_gb = Graph Box(
Title( "Overall Modeling Progress" ),
FrameSize( 150, 15 ),
X Scale( 0, 100 ),
Y Scale( 0, 1 ),
yaxis( show major ticks( 0 ), show minor ticks( 0 ) ),
xname( "% complete" ),
yname( "" )
),
tb = Text Box(
" Current step " || Char( i ) || " of " || Char( imax ),
<<SET font="" size=""></SET>
DS
Re: JMP 스크립트 진행 표시기감사합니다. 완벽하게 작동했습니다.
(1)은 내 y 축을 없앴습니다. %를 표시하기 위해 (2)를 그대로 두었습니다.
나는 또한 그래픽을 업데이트하기 위해 약간의 대기(wait(0); 이상)가 필요하다는 것을 발견했습니다. 여기에 그래프 상자를 업데이트하는 루프의 끝이 있습니다.
| | 진행률 = floor((paramNum / numParams)*100); |
| | dlgStatus[FrameBox(1)] << 그래픽 스크립트 추가({Fill Color("blue"),Rect(0,1,progress,0,1)}); //업데이트 진행 |
| | 대기(0.001); |
);
"바닥" 기능이 필요한지 확실하지 않지만 제 경우에는 아프지 않습니다.
Re: JMP 스크립트 진행 표시기다음 명령을 사용하여 축을 제거할 수 있습니다.
dlg_gb[AxisBox( 2 )] << Delete;
dlg_gb[AxisBox( 1 )] << Delete;
이 두 줄을 첫 번째 줄 바로 앞에 넣으십시오. dlgStatus[FrameBox(1)]... 명령.