데이터 업데이트 시 컨트롤 차트 표시를 고정하는 방법안녕,
csv 파일을 읽고 차트를 제어하는 스크립트가 있습니다. 새 데이터가 업데이트되고 컨트롤 차트가 새 차트를 생성하지 않도록 이 프로세스를 자동화하고 싶습니다. 업데이트된 데이터가 있는 차트에서만 보고 싶습니다.
다음은 내가 사용한 스크립트입니다. 당신의 도움에 감사드립니다. 감사해요
------------------
여기에 기본 이름 ( 1 );
dt = 열려 있는 (
"/사용자/adatorab/문서/JMP/PASS.csv" ,보이지 않는);
객체 = dt <<
컨트롤 차트 빌더 (
변수( Y( :A ) ),
차트 (
위치( 1 ),
포인트들(
통계량(
"개인"
)
),
제한(
시그마(
"움직이는 범위"
)
)
),
차트 (
위치( 2 ),
포인트들(
통계량(
"움직이는 범위"
)
),
제한(
시그마(
"움직이는 범위"
)
)
)
);
개체 << 쇼윈도우 ( 0 );
nw = 새창 ( "컨트롤 차트" );
nw << 추가 (( H 목록 상자 ( (객체 << 보고서 ) << 클론 상자 )));
Re: 데이터 업데이트 시 컨트롤 차트 표시를 고정하는 방법도움을 주셔서 감사합니다.
Re: 데이터 업데이트 시 컨트롤 차트 표시를 고정하는 방법Bryon의 컨트롤 차트 코드를 귀하의 컨트롤 차트 코드에 복사하고 임의의 '최소' 시간을 추가한 결과 다음과 같습니다.
//Open a window to show a control chart and then update
//the chart every 15 seconds
//Includes a button to refresh early.
Names Default To Here( 1 );
//Define variables here that need to keep their values through subsequent function calls
//This includes the window and data table
//Open a window to hold the chart (note this only happens once)
nw = New Window( "Control Chart",
V List Box(
Button Box( "New Data", UpdateData() ),
holder = H List Box();
)
);
//Make a variable to hold a reference to the data table
dt = .;
//A function that will update the chart
UpdateData = Function( {},
//Close the table if it is already open
Try( dt << Close Window );
//Open data table
dt = Open( "$SAMPLE_DATA/Abrasion.jmp", Private );
//Make the control chart
obj = dt << Control Chart(
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Abrasion, Individual Measurement ),
SendToReport(
Dispatch(
{"Individual Measurement of Abrasion"},
"1",
ScaleBox,
{Min( nrows() - Floor( Random Uniform( 10, 25 ) ) ), Max( nrows() + 2 ), Inc( 5 ),
Minor Ticks( 1 )}
)
)
);
//Hide the temporary control chart window
obj << ShowWindow( 0 );
//Remove existing/old graph from the window (if there is one)
Try( (holder << Child) << Delete );
//Add the new graph
holder << Append( (H List Box( (obj << Report) << Clone Box )) );
//Close the temporary control chart
obj << Close Window;
);
//Script to update then chart and then call itself 15 seconds later
quickieScript = Expr(
//Load the chart in the window (run the script in the function)
UpdateData();
//Run this same script in 5 seconds
Schedule( 5, quickieScript );
);
//Start things off:
quickieScript;Re: 데이터 업데이트 시 컨트롤 차트 표시를 고정하는 방법컨트롤 차트 빌더 보고서가 있는 것 같습니다. 클래식 컨트롤 차트는 약간 다르게 작동합니다. (쉽게)
Re: 데이터 업데이트 시 컨트롤 차트 표시를 고정하는 방법감사해요. 나는 이것을 시도했지만 오류가 발생하지 않지만 x 축은 20 포인트만 표시되지 않습니다.
더 도와주실 수 있나요? 정말 감사합니다.
//컨트롤 차트를 표시하기 위해 창을 연 다음 업데이트
//15초마다 차트
//일찍 새로 고침하는 버튼을 포함합니다.
여기에 기본 이름 ( 1 );
//후속 함수 호출을 통해 값을 유지해야 하는 변수를 여기에 정의합니다.
//여기에는 창과 데이터 테이블이 포함됩니다.
//차트를 보관할 창을 엽니다(한 번만 발생함).
nw = 새창 ( "컨트롤 차트" ,
V 목록 상자 (
버튼 박스 ( "새로운 데이터" , UpdateData() ),
보유자 = H 목록 상자 ();
)
);
//데이터 테이블에 대한 참조를 보유할 변수를 만듭니다.
dt = . ;
//차트를 업데이트하는 함수
업데이트 데이터 = 기능 ( {},
//테이블이 열려 있으면 닫는다.
노력하다 (dt << 창 닫기 );
//데이터 테이블 열기
dt = 열려 있는 ( "$SAMPLE_DATA/Abrasion.jmp" , 사적인 );
//컨트롤 차트 만들기
객체 = dt << 컨트롤 차트 빌더 (
두 개의 Shewhart 차트 표시( 0 ),
제어판 표시( 0 ),
기능 표시( 0 ),
변수( Y( : 마모 ) ),
차트 (
포인트( 통계( "개인" ) ),
한계( 시그마( 이동 범위 ) ),
//경고( 테스트 1( 1 ) )
SendToReport(
보내다(
{ "개별 마모 측정" },
"1" ,
스케일박스,
{ 분 ( nrows ()- 20 ), 최대 ( nrows ()+ 2 ), Inc( 5 ),
마이너 틱( 1 )}
)
)
)
);
//임시 컨트롤 차트 창 숨기기
개체 << 쇼윈도우 ( 0 );
//창에서 기존/이전 그래프 제거(있는 경우)
노력하다 ( (홀더 << 어린이 ) << 삭제 );
//차트 업데이트가 표시될 때까지 잠시 기다립니다.
기다리다 ( 0.2 );
//새 그래프 추가
보유자 << 추가 ( ( H 목록 상자 ( (객체 << 보고서 ) << 클론 상자 )) );
//임시 컨트롤 차트를 닫습니다.
개체 << 창 닫기 ;
);
//차트를 업데이트하고 15초 후에 자신을 호출하는 스크립트
quickieScript = 만료 (
//창에 차트 로드(함수에서 스크립트 실행)
UpdateData();
//이 같은 스크립트를 15초 안에 실행
일정 ( 15 , quickieScript );
);
//시작:
quickieScript;
Re: 데이터 업데이트 시 컨트롤 차트 표시를 고정하는 방법이것은 Abrasion.jmp에 대해 실행할 컨트롤 차트 스크립트입니다.
Control Chart(
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Abrasion, Individual Measurement ),
SendToReport(
Dispatch(
{"Individual Measurement of Abrasion"},
"1",
ScaleBox,
{Min( nrows()-25 ), Max( nrows()+2 ), Inc( 5 ),
Minor Ticks( 1 )}
)
)
);
고전적인 컨트롤 차트 플랫폼을 사용합니다.
Re: 데이터 업데이트 시 컨트롤 차트 표시를 고정하는 방법제안해 주셔서 감사합니다. 두 번째 질문이었던 것 같습니다. 원본 스크립트에서 스크립트를 어디에 삽입합니까(위).
Re: 데이터 업데이트 시 컨트롤 차트 표시를 고정하는 방법매우 감사합니다. 이것은 내 문제를 해결했습니다.
Re: 데이터 업데이트 시 컨트롤 차트 표시를 고정하는 방법관리 차트에서 최신 데이터만 보고 싶은 것이 문제입니까?
일부 테이블에서 데이터가 업데이트되는 장면을 보았습니다. 테이블 사본을 가져올 때마다 테이블에 있는 행 수에 관계없이 마지막 50개 행만 보고 싶습니다.
이것은 설정하기가 매우 쉽습니다. 컨트롤 차트를 만들고 x축을 조정하기만 하면 됩니다. 그런 다음 컨트롤 차트 스크립트를 보고 아래 스크립트처럼 보이는 부분을 찾습니다.
SendToReport(
Dispatch(
{"Individual Measurement of Metric 1"},
"1",
ScaleBox,
{Min( nrows()-50), Max( nrows()+2 ), Inc( 5 ),
Minor Ticks( 0 )}
),
Min( 및 Max(라고 표시된 곳에서 원래 스크립트의 값을 편집합니다. min()의 숫자를 다음으로 바꿉니다. nrows()-50 max()의 숫자를 다음으로 바꿉니다. nrows()+2.
이제 멋진 작업, 삭제 및 추가 작업을 모두 수행하면 최신 데이터가 포함된 관리도를 얻을 수 있습니다.
Re: 데이터 업데이트 시 컨트롤 차트 표시를 고정하는 방법이제 이해가 된 것 같습니다.문제는 스크립트가 실행될 때마다 새 창을 여는 것입니다.업데이트를 시작할 때마다 마지막 창을 닫거나 동일한 창을 새 차트로 새로고침할 수 있습니다.아래는 후자의 예입니다.
실제 코드를 작성하기 전에 주석에 '의사 코드'를 작성하는 경우가 많습니다. 코드가 실제로 예상대로 작동하는지 확인하는 데 도움이 됩니다.그런 다음 전체 워크플로우가 이해되면 실제로 수행할 코드를 채웁니다.
//Open a window
//Every 15 Seconds:
//Make a chart with the latest data
//Update the window with a new chart
//Open a window to show a control chart and then update
//the chart every 15 seconds
//Includes a button to refresh early.
Names Default To Here( 1 );
//Define variables here that need to keep their values through subsequent function calls
//This includes the window and data table
//Open a window to hold the chart (note this only happens once)
nw = New Window( "Control Chart",
V List Box(
Button Box( "New Data", UpdateData() ),
holder = H List Box();
)
);
//Make a variable to hold a reference to the data table
dt = .;
//A function that will update the chart
UpdateData = Function( {},
//Close the table if it is already open
Try( dt << Close Window );
//Open data table
dt = Open( "$SAMPLE_DATA/Abrasion.jmp", Private );
//Make the control chart
obj = dt << Control Chart Builder(
Variables( Y( :Abrasion ) ),
Chart(
Position( 1 ),
Points( Statistic( "Individual" ) ),
Limits( Sigma( "Moving Range" ) )
),
Chart(
Position( 2 ),
Points( Statistic( "Moving Range" ) ),
Limits( Sigma( "Moving Range" ) )
)
);
//Hide the temporary control chart window
obj << ShowWindow( 0 );
//Remove existing/old graph from the window (if there is one)
Try( (holder << Child) << Delete );
//Wait a moment to show when the chart updates
Wait(0.2);
//Add the new graph
holder << Append( (H List Box( (obj << Report) << Clone Box )) );
//Close the temporary control chart
obj << Close Window;
);
//Script to update then chart and then call itself 15 seconds later
quickieScript = Expr(
//Load the chart in the window (run the script in the function)
UpdateData();
//Run this same script in 15 seconds
Schedule( 15, quickieScript );
);
//Start things off:
quickieScript;Re: 데이터 업데이트 시 컨트롤 차트 표시를 고정하는 방법죄송합니다. 처음 몇 줄을 놓쳤습니다. 여기 정답이 있습니다.
------------
여기에 기본 이름 ( 1 );
quickieScript = 만료 (
일정 ( 15 , quickieScript );
// 샘플 데이터 열기
dt = 열려 있는 ( "$SAMPLE_DATA/Abrasion.jmp" );
//차트를 업데이트하는 함수
업데이트 데이터 = 기능 ( {},
//컨트롤 차트 만들기
객체 = dt << 컨트롤 차트 빌더 (
변수( Y( : 마모 ) ),
차트 (
위치( 1 ),
포인트( 통계( "개인" ) ),
한계( 시그마( "움직이는 범위" ) )
),
차트 (
위치( 2 ),
포인트( 통계( "움직이는 범위" ) ),
한계( 시그마( "움직이는 범위" ) )
)
);
//임시 컨트롤 차트 창 숨기기
개체 << 쇼윈도우 ( 0 );
//창에서 기존/이전 그래프 제거(있는 경우)
노력하다 ( (홀더 << 어린이 ) << 삭제 );
//새 그래프 추가
보유자 << 추가 (( H 목록 상자 ( (객체 << 보고서 ) << 클론 상자 )));
//임시 컨트롤 차트 닫기
개체 << 창 닫기 ;
);
//새 컨트롤 차트를 표시하는 창을 열고 차트를 새로 고치는 버튼을 엽니다.
//위의 스크립트를 실행하는 버튼을 포함합니다.
nw = 새창 ( "컨트롤 차트" ,
V 목록 상자 (
버튼 박스 ( "새로운 데이터" , UpdateData() ),
보유자 = H 목록 상자 ();
)
);
//창에 첫 번째 차트를 로드합니다(함수에서 스크립트 실행).
UpdateData();
);
quickieScript;
Re: 데이터 업데이트 시 컨트롤 차트 표시를 고정하는 방법감사해요. 나는 윈도우 스케줄러를 사용하여 이 스크립트를 실행하고 데이터를 읽을 때(예: 15초 정도) 하나의 차트를 보고 싶습니다. 나는 많은 "제어 차트"를 얻습니다). 나는 당신의 예를 시도했고 그것을 창 작업 (또한 일정 기능)에 넣었고 많은 "제어 차트"1, 2, 3, ..을 얻었습니다. 어쨌든 당신은 차트에서만 얻을 수 있습니까?
아래는 제가 사용하는 것입니다. 감사해요
//차트를 업데이트하는 함수
업데이트 데이터 = 기능 ( {},
//컨트롤 차트 만들기
객체 = dt << 컨트롤 차트 빌더 (
변수( Y( : 마모 ) ),
차트 (
위치( 1 ),
포인트( 통계( "개인" ) ),
한계( 시그마( "움직이는 범위" ) )
),
차트 (
위치( 2 ),
포인트( 통계( "움직이는 범위" ) ),
한계( 시그마( "움직이는 범위" ) )
)
);
//임시 컨트롤 차트 창 숨기기
개체 << 쇼윈도우 ( 0 );
//창에서 기존/이전 그래프 제거(있는 경우)
노력하다 ( (홀더 << 어린이 ) << 삭제 );
//새 그래프 추가
보유자 << 추가 (( H 목록 상자 ( (객체 << 보고서 ) << 클론 상자 )));
//임시 컨트롤 차트를 닫습니다.
개체 << 창 닫기 ;
);
//새 컨트롤 차트를 표시하는 창을 열고 차트를 새로 고치는 버튼
//위의 스크립트를 실행하는 버튼을 포함합니다.
nw = 새창 ( "컨트롤 차트" ,
V 목록 상자 (
버튼 박스 ( "새로운 데이터" , UpdateData() ),
보유자 = H 목록 상자 ();
)
);
//창에 첫 번째 차트를 로드합니다(함수에서 스크립트 실행).
UpdateData();
);
quickieScript;
Re: 데이터 업데이트 시 컨트롤 차트 표시를 고정하는 방법여기에서 잘못된 방향으로 가고 있을지도 모르지만 새 데이터가 표시될 때 아래/뒤에 다른 데이터를 추가하는 대신 창의 차트를 교체하기를 원한다고 생각합니다.그렇게 하려면 새 차트를 추가하기 전에 이전 차트를 삭제하십시오.다음은 예입니다.
names default to here( 1 );
//Open sample data
dt = Open("$SAMPLE_DATA/Abrasion.jmp");
//A variable used to hide part of the data
lastrow = 10;
//Hide data after the last row (simulates a smaller table)
df = dt << Data Filter(
Location( {696, 15} ),
Mode( Select( 0 ), Show( 1 ), Include( 1 ) ),
Add Filter(
columns( Transform Column( "Row", Formula( Row() ) ) ),
Where(
Transform Column( "Row", Formula( Row() ) ) <= lastrow
)
)
);
//A function that will update the chart
UpdateData = function( {},
//Add one row to the data table
lastrow++;
//Update the data filter (simulates getting more data)
df << Delete All;
df << Add Filter(
columns( Transform Column( "Row", Formula( Row() ) ) ),
Where(
Transform Column( "Row", Formula( Row() ) ) <= lastrow
)
);
//Make the control chart
obj = dt << Control Chart Builder(
Variables( Y( :Abrasion ) ),
Chart(
Position( 1 ),
Points( Statistic( "Individual" ) ),
Limits( Sigma( "Moving Range" ) )
),
Chart(
Position( 2 ),
Points( Statistic( "Moving Range" ) ),
Limits( Sigma( "Moving Range" ) )
)
);
//Hide the temporary control chart window
obj << ShowWindow(0);
//Remove existing/old graph from the window (if there is one)
Try( (holder << Child) << Delete );
//Add the new graph
holder << Append(( H List Box( (obj << Report) << Clone Box)));
//Close the temporary control chart
obj << Close Window;
);
//Open a window to show the new control chart and a button to refresh the chart
//Includes a button to run the script above.
nw = New Window("Control Chart",
V List Box(
Button Box("New Data", UpdateData() ),
holder = H List Box();
)
);
//Load the first chart in the window (run the script in the function)
UpdateData();