관리도의 이벤트 라인 및 설명
알려진 이벤트로 관리도에 주석을 달고 계십니까? 그래프에 이벤트 라인을 추가해야 하는 상황이 계속해서 발생하고 있습니다. 이는 평균 및 관리 한계를 다시 계산할 필요가 없기 때문에 단계와 구별됩니다. 단지 어떤 일이 발생했는지 표시하는 마커만 있으면 됩니다. 편리한 자동화 방식으로 그래프의 점에 라벨을 지정해야 하는 경우도 있습니다. 이 블로그에서는 이벤트 라인 그리기 및 그래프에 설명 추가를 용이하게 하는 컨트롤 차트 그래프에 추가할 수 있는 몇 가지 스크립트를 다룹니다.

그래프를 사용자 정의하는 첫 번째 단계는 그래프 내부를 마우스 오른쪽 버튼으로 클릭하고 사용자 정의를 선택하는 것입니다. 그러면 그래프 사용자 정의 대화 상자가 나타납니다. 왼쪽 상단의 "+" 아이콘을 클릭하면 빈 스크립트가 열리고 여기에 아래 설명된 예제를 붙여넣을 수 있습니다.이 첫 번째 예에서는 테이블에 "Comment"라는 문자 열이 있어야 합니다. 이 열에 값이 있으면 위 예와 같이 그래프에 수직선이 그려집니다.

두 번째 단계는 이 창에 추가할 수 있는 몇 가지 사용자 정의 스크립트를 살펴보는 것입니다. 각 명령 집합이나 인수는 세미콜론으로 함께 붙여야 합니다. 그래프에서 이러한 사용자 정의 스크립트를 사용하는 방법을 배우기에 좋은 곳은 대화 상자 창의 샘플 및 템플릿 드롭다운입니다. 또한 도움말 탭 아래의 스크립팅 색인에는 각 기능에 대한 세부 정보가 포함되어 있습니다. 이 작은 스크립트 창은 다소 제한되어 있으므로 변경 사항을 적용한 후 편집을 계속하려면 보고서 스크립트를 스크립트 창에 저장하는 것이 좋습니다. 그래프에 추가된 모든 사용자 정의 스크립트는 보고서 개체 스크립트에도 표시됩니다. 이 대화 상자를 사용하면 JSL에 대한 지식이나 보고서 개체의 스크립트를 조작하는 방법을 몰라도 쉽게 그래프에 추가할 수 있습니다.
사용자 정의 그래프 스크립트 1: 선 추가
For Each Row( If( Is Missing( :Comment ) == 0, V Line( row() ) ) );
설명:
- For Each Row(): 수식이 열 수준이 아닌 각 행에서 평가되도록 합니다.
- Is Missing(): 이 함수는 행이 비어 있으면 "0"을 반환하고 그렇지 않으면 "1"을 반환합니다. 행이 누락되지 않은 경우(즉 = "0") V 선이 제거되고 선이 그려집니다.
- V Line(): 이에 대한 스크립팅 인덱스를 확인하세요. 사용할 수 있는 흥미로운 옵션이 많이 있습니다. 이 경우에는 하나의 숫자만 지정하므로 해당 숫자에 전체 프레임에 걸쳐 수직선이 그려집니다. (전화번호는 없지 않나요?)
- Row(): 이 함수는 행 번호를 반환합니다. 이 행 번호를 프레임을 통해 수직선이 그려지는 위치로 사용하고 있습니다.
사용자 정의 그래프 스크립트 2: 선에 레이블 추가
For Each Row( If( Is Missing( :Comment ) == 0, Text( Right Justified, {row(),
Col Maximum( :Data ) * 1.2},:Comment)));
설명:
- For Each Row(): 수식이 열 수준이 아닌 각 행에서 평가되도록 합니다.
- If(): 이것은 전형적인 "If, Then, Else" 함수입니다. 조건이 true이면 첫 번째 작업을 수행하고, 그렇지 않으면 두 번째 작업을 수행합니다. 여기에는 "else"가 없습니다. 따라서 조건이 참이면 첫 번째 일이 발생하고 그렇지 않으면 아무 일도 일어나지 않습니다.
- Is Missing(): 이 함수는 행이 비어 있으면 "0"을 반환하고 그렇지 않으면 "1"을 반환합니다. 여기서 행이 누락되면 아무 일도 일어나지 않지만 누락되지 않은 경우 텍스트 함수가 평가됩니다.
- Text(): 여기에 포함될 수 있는 모든 인수와 몇 가지 좋은 예에 대한 스크립팅 인덱스를 다시 확인하세요. 여기서는 Y와 X 좌표에 텍스트를 넣을 것이며, 텍스트는 :Comment 열에 있습니다.
- Row()는 x 위치이고 y 위치는 :Data 열의 최대값(Col Maximum())에 1.2를 곱한 값입니다. 이렇게 하면 텍스트가 데이터 포인트보다 약간 위에 표시됩니다.
사용자 정의 그래프 스크립트 3: 데이터 포인트에 레이블 추가.
열과 행 속성을 사용하여 데이터 요소에 레이블을 지정하는 것이 더 좋고 쉬울 수도 있지만 경우에 따라 이와 같은 스크립트 솔루션은 상당히 복잡합니다.
For Each Row(If( Is Missing( :Note ) == 0, If( :Data <= Col Mean( :Data ),
Text( Right Justified,{Row(),:Data-:Data*1.1}, :Note ),
Text( Right Justified,{Row(),:Data * 1.1}, :Note ))));
설명:
- 좀 멋져지네요. 이 표현식에는 중첩된 If 문이 있습니다. Note가 누락되지 않고 :Data가 :Data의 열 평균보다 작거나 같은 경우 :Note의 텍스트를 데이터 포인트 아래에 두거나 :Note의 텍스트를 데이터 포인트 위에 두십시오.
- 이렇게 하면 그래프에서는 더 좋아 보이지만 이 예에서는 필요한 것보다 조금 더 복잡해 보이기 시작합니다.
- 더 간단한 버전은 다음과 같습니다.
For Each Row(If( Is Missing( :Note ) == 0, Text( Right Justified,{Row()+1,:Data}, :Note );
"row()+1"은 텍스트를 데이터 포인트의 오른쪽으로 이동합니다.
예제 관리 차트 스크립트
이 스크립트의 테이블에는 다음 열이 있어야 합니다. 예제 테이블이 첨부되어 있습니다.
- ID, 연속 행 번호
- 데이터, 추세를 나타내는 데이터가 포함된 열
- 설명, 세로줄에 대해 드물게 채워진 설명 열입니다.
- 메모, 특정 데이터 포인트에 대해 드물게 채워진 메모 열입니다.
이 스크립트는 위 그림의 제어 차트를 생성합니다.
Control Chart(
Sample Label( :ID ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Data, Individual Measurement ),
SendToReport(
Dispatch(
{"Individual Measurement of Data"},
"IR Chart of IM",
FrameBox,
{Frame Size( 800, 200 ), Add Graphics Script(
1,
Description( "Script" ),
For Each Row( If( Is Missing( :Comment ) == 0, V Line( Row() ) ) );
For Each Row(
If( Is Missing( :Comment ) == 0,
Text( Right Justified, {Row(), Col Maximum( :Data ) * 1.2},:Comment ))
);
For Each Row(
If( Is Missing( :Note ) == 0,
If( :Data <= Col Mean( :Data ),
Text( Right Justified,{Row(),:Data-:Data*1.1}, :Note ),
Text( Right Justified,{Row(),:Data * 1.1}, :Note )))
);
), Grid Line Order( 2 ), Reference Line Order( 3 )}
),
Dispatch( {"Individual Measurement of Data"}, "IR Chart of IM", FrameBox( 2 ),
{Frame Size( 72,200)})))
1. 네, 무엇을 추가하시겠습니까?
2. 간접적으로 할 수 있는 방법이 있다고 확신합니다. 보고서 작성에 어떤 컬럼을 사용했는지 쿼리하고, 그런 식으로 컬럼명을 캡쳐하는 방법이 있는 것 같아요. 그런 다음 데이터 열에 대한 참조를 사용하여 그래프에 사용자 정의 스크립트를 추가합니다.
2. 변수 목록을 반복한 다음 사용자 정의 스크립트에 현재 열에 대한 참조를 포함하면 더 쉬울 것입니다.
안녕하세요 바이런님, 또 다른 한 가지(실제로는 2개!!)입니다. "사용자 정의 그래프 스크립트 3: 데이터 포인트에 레이블 추가"에 대한 태그 라인을 추가할 수 있습니까? y축의 이름을 정확하게 지정할 필요는 없지만(예: ":Data") 기본적으로 열 이름으로 지정되는 스크립팅 방법이 있습니까?
건배 이안
이안,
그 일이 일어나는 원인이 무엇인지는 잘 모르겠지만(아직 커피가 충분하지 않음) 이렇게 하면 문제가 해결될 것입니다.
이것은 사용자 정의 메뉴 아래의 스크립트입니다.
For Each Row( If( Is Missing( :Comment ) == 0, V Line( row()-1 ) ) );
For Each Row(
If( Is Missing( :Comment ) == 0,
Text( Right Justified, { row()-1, Col Maximum( :Data ) * 1.2}, :Comment )
)
);
위치에 대한 행 번호를 사용하기 위해 row()-1을 :ID 열로 대체한 다음 한 단계 뒤로 이동했습니다.
안녕 바이런,
SPC 차트 빌더에 스크립트를 복사하려고 했습니다.
파일에 대한 링크를 보냈으며 다음과 같은 의견이 있습니다.
1_ID별 관리 차트: 변경되지 않은 관리 차트입니다. 모두 괜찮습니다.

2_ID 및 제어 차트 빌더별 제어 차트: 이것은 차트 빌더에 복사된 (#1)의 스크립트입니다. 수직선은 x축에서 한 위치만큼 벗어났습니다. 첫 번째 두 가지 특수 원인을 참조하세요.
관리도 작성기

3_ID 및 제어 차트 빌더별 제어 차트 숫자/연속: ID를 숫자/서수에서 숫자/연속으로 변경하면 모든 것이 정상입니다.

4_ID별 제어 차트 및 제어 차트 빌더 AS 숫자/연속 문자/숫자): 하지만 x축 문자/숫자 배치 번호에 플롯하고 싶은데 다시 설정됩니다.

너무 짜증나네요 도와주실 수 있나요? 파일 위치를 보내드리겠습니다
https://1drv.ms/u/s!Au2FkmkZvSi-sA8j_g625J1VFdtw?e=0UPtz6
건배 이안