이전에는 우편 에서 그래프렛 사전 설정과 그래프렛 붙여넣기 명령에 대해 배웠습니다. 호버 라벨에서 상황 인식, 클릭 가능한 시각화 썸네일을 지원하는 방법을 보여드렸습니다. 이러한 명령은 JMP 15 호버 레이블 확장 기능의 "도자기" 측면을 구현하여 코딩 기술이 필요하지 않은 사용자 친화적인 인터페이스를 제공합니다.
이 게시물에서는 도자기 레이어에 힘을 실어주는 기본 "배관" 레이어를 더 자세히 살펴보게 됩니다. 이 레이어는 사용자가 직접 액세스할 수도 있는 프레임워크로 설계되어 포세린 기능에서 다루지 않는 요구 사항을 구현할 수 있습니다.
호버 라벨 확장 프레임워크
프레임워크는 기본 서비스와 확장 지점의 조합입니다. 프레임워크의 관점에서 볼 때 사전 설정과 사용자 정의 그래프렛은 동일하므로 유일한 차이점은 JMP 사용자의 편의를 위해 미리 정의된 정의를 제공합니다.
프레임워크 수준에서 사전 설정을 포함한 모든 그래프렛은 그래프렛 설정 명령을 실행하지만 각 사전 설정은 서로 다른 인수 집합을 사용하여 프레임워크를 초기화합니다. 이러한 인수에는 나중에 콜백으로 사용되는 JSL 스크립트 조각이 포함됩니다. 프레임워크는 시각적 요소 위에 마우스를 올리거나 마우스 오버 라벨 썸네일을 클릭하는 등의 사용자 상호 작용에 대한 응답으로 이러한 콜백을 평가합니다.
콜백 평가는 내부에서 발생합니다. 호버 라벨 실행 컨텍스트 (HLEC)는 기본 시각적 요소에 대한 상황별 정보를 캡처합니다. 콜백은 이러한 상황별 정보를 활용하여 동적 동작을 구현할 수 있습니다. 예를 들어 히스토그램 사전 설정을 살펴보겠습니다. 기본 시각화 Y 역할 할당을 찾기 위해 컨텍스트를 살펴본 후 해당 열을 자체 Y 역할 할당에 재사용합니다.
호버 라벨 확장 프레임워크에 대한 다른 진입점은 다음과 같습니다. 그래프렛 붙여넣기 (Set Graphlet의 래퍼), 텍스트렛 설정 , 그리고 그리드렛 설정 . 이 게시물에서는 Set Graphlet 명령을 예로 사용하지만 다른 명령에도 동일한 원칙이 적용됩니다.
사용자 정의 그래프렛을 생성하는 가장 좋은 방법은 다음을 사용하는 것입니다. 호버 라벨 편집기 대화. Hover Label Editor를 사용하여 그래프렛 사전 설정이 정의된 방식을 검사할 수도 있습니다. 사전 설정 정의는 프레임워크 기능을 사용하는 방법에 대한 훌륭한 예를 제공합니다.

그래프렛 콜백
Hover Label Editor Graphlet 패널은 몇 가지 스크립트 인수를 표시하며, 가장 중요한 인수는 그림 및 클릭입니다. 프레임워크는 다음 이벤트에 대한 응답으로 런타임에 이를 호출합니다.
- 호버링: 사용자가 막대형 차트의 막대 위에 마우스를 놓는 경우처럼 짧은 시간 동안 시각적 요소 위에 마우스 포인터를 놓으면 그림 스크립트 조각이 실행됩니다. 그렇게 하면 PictureBox( 전시 상자 그래픽 그림 객체를 포함하는 것) 또는 디스플레이 트리 PictureBox가 포함되어 있습니다. 스크립트가 플랫폼 실행을 요구하는 경우 보이지 않는 창 내에서 실행됩니다. 그런 다음 프레임워크는 결과의 표시 트리를 순회한 다음 발견된 첫 번째 PictureBox의 스크린샷을 캡처하고 축소합니다. 해당 이미지는 호버 라벨 내부에 표시되는 축소판이 됩니다.
- 클릭: 사용자가 호버 레이블 그래프 썸네일을 마우스 왼쪽 버튼으로 클릭하면 선택적 Click 인수가 트리거됩니다. 존재하지 않으면 그림 스크립트가 재사용되지만 포함된 플랫폼을 실행하면 창이 표시됩니다. 이것이 사전 설정이 시각화를 시작하는 방법입니다.
Click 콜백은 임의의 JSL 스크립트를 실행할 수 있습니다. 예를 들어 웹 페이지를 열고, REST 호출을 수행하고, 디스크에서 파일을 로드하고, 테이블을 업데이트할 수 있습니다. 외부 데이터, 시스템 및 기타 고급 시나리오와의 통합이 가능합니다.
앞에서 언급했듯이 콜백 평가는 두 가지 구성 요소가 있는 실행 컨텍스트 내에서 발생합니다.
- 시각적 요소 데이터와 일치하도록 행의 하위 집합을 지정하는 로컬 데이터 필터입니다.
- 시각적 요소 특성을 캡처하는 로컬 네임스페이스입니다.
로컬 데이터 필터
그래프의 각 시각적 요소는 원본 데이터의 하위 집합에 해당합니다. 예를 들어, 학생들의 성별 평균 키를 보여주는 막대 차트를 살펴보겠습니다. 첫 번째 막대는 여학생에 해당합니다. 두 번째는 남성을위한 것입니다. 이러한 암시적 그룹화는 시각화 정의 중에 발생합니다.
프레임워크는 동등한 항목을 통해 그룹화를 명시적으로 만듭니다. 로컬 데이터 필터 (LDF)는 콜백 실행 중에 표시되는 데이터 테이블 행을 제한하는 데 사용됩니다. LDF 정의는 다음을 기반으로 합니다.
- 기준 시각화 그래프 유형입니다.
- 그룹화 역할(X, 그룹 X/Y, 오버레이 등)에 할당된 열입니다.
- 이 열과 연결된 값입니다.
아래 예에서 기준 그래프는 작은 배수 막대 차트입니다. 프레임워크는 두 그룹화 변수를 기반으로 이를 LDF에 매핑합니다.
- X 역할(연령)에 할당된 역할입니다.
- 그룹 Y(성별)에 할당된 것입니다.
마우스로 가리킨 막대와 차트가 포함된 패널이 어떻게 필터 값을 생성하는지 확인하세요.

열 포함에 대한 추가 제어는 다음을 통해 가능합니다. 필터 건너뛰기 속성. 꼭 필요한 경우는 아니지만 일반적으로 기본 시각적 요소와 연결된 것보다 더 많은 데이터를 표시하려는 경우 유용할 수 있습니다.
핵심 메커니즘 드릴다운 사용자 상호 작용에 응답하여 컨텍스트 기반 LDF를 사용하여 플랫폼을 시작하는 기능입니다.
로컬 네임스페이스
HLEC의 두 번째 구성 요소는 로컬 네임스페이스 . 주요 목적은 그래프렛에 컨텍스트 정보를 노출하여 그래프렛이 동적인 컨텍스트 인식 동작을 나타낼 수 있도록 하는 것입니다. 프레임워크는 각 그래프렛 콜백을 실행하기 전에 로컬 네임스페이스로 래핑합니다.
그래프렛 로컬 네임스페이스는 프레임워크에 의해 로컬 변수로 채워집니다. 이것들 컨텍스트 변수 명명 규칙을 따르십시오. 즉, 이름은 항상 밑줄로 시작해야 합니다. 현재 실행 컨텍스트와 관련된 다양한 소스에서 정보를 캡처합니다.
- 마우스로 가리킨 시각적 요소 유형(막대, 마커 등)
- 연관된 데이터의 첫 번째 행에 대한 인덱스입니다.
- 연관된 데이터의 관측치 수입니다.
- 호버 레이블 그리드 항목(각 항목에 대해 하나의 변수)
- 콜백 유형(사진, 클릭 등)
- LDF where 절.
- 드릴다운 수준도 중요합니다.
디버깅할 때 새 그래프렛의 값을 확인하는 쉬운 방법은 아래와 같이 호버 레이블 자체에 텍스트로 값을 추가하는 Textlet 컨텍스트 사전 설정을 사용하는 것입니다.

함께 모아서
다음 다이어그램은 그래프렛 사전 설정 실행 시 프레임워크의 다양한 부분이 어떻게 결합되는지 보여줍니다. 사용자 정의 그래프렛에서 사용자는 그림 스크립트 인수를 사용하여 그래프 템플릿을 제공합니다.

첫째, 프레임워크는 구성 시 그래프 템플릿과 기타 인수를 캡처합니다. 나중에 사용자 상호 작용에 대한 응답으로 HLEC의 일부인 필터와 네임스페이스를 생성합니다. 호버 라벨 썸네일 이미지를 생성하기 위해 HLEC 내부의 템플릿을 인스턴스화합니다. 사용자가 해당 이미지를 클릭하면 자체 창에서 관련 플랫폼이 실행됩니다.
사용자 정의 그래프렛 예
이제 메커니즘을 이해했으므로 기본 그래프 프레임워크에 액세스하는 것이 사용자가 실제 문제를 해결하는 데 어떻게 도움이 되는지 보여주는 예는 다음과 같습니다.
얼마 전 한 사용자가 여기에서 질문을 했습니다. JMP 사용자 커뮤니티 . 그녀는 실험의 이미지 파일(특히 고해상도 사진)이 들어 있는 폴더를 가지고 있었습니다. 그녀는 호버 라벨에 실험과 관련된 이미지를 표시하고 싶었지만 이미지가 너무 커서 JMP 테이블에 저장할 수 없었습니다. 요청 시 디스크에서 로드할 수 있었습니까?
이를 실현하는 데에는 몇 가지 장애물이 있었습니다. 이는 기존 사전 설정과 일치하지 않았고 동적 동작이 필요하고 표시된 이미지의 파일 이름이 요청 시 계산되어야 했기 때문에 Paste Graphlet에 적합하지 않았습니다.
해결책은 JSL 파일 프리미티브를 기반으로 하는 콜백으로 프레임워크를 확장하여 사용자 정의 그래프렛을 생성하는 것이었습니다.
해당 솔루션의 원리는 아래 Iris 데이터 세트를 기반으로 한 예에 나와 있습니다. 이 예제의 중요한 부분은 이미지를 디스크에서 직접 로드하는 방법을 보여주는 것입니다. 파일 이름은 HLEC 로컬 네임스페이스 변수 중 하나를 기반으로 합니다. 보너스로, 표시된 이미지를 클릭하는 사용자에 대한 응답으로 관련 웹 페이지를 여는 방법을 볼 수 있습니다.
Set Graphlet(
// Value from hover label grid entry (labeled column)
Picture(
Picture Box( Open( img_dir || local:_Species || ".jpg", "jpg" ) )
),
// Value from data table using column reference for visualized row
Click(
Web( "https://en.wikipedia.org/wiki/Iris_" || Column( "Species" )[local:_firstRow] )
)
)

결론
우리는 귀하가 항상 사전 설정을 사용하고 그래프렛을 붙여넣어 대부분의 요구 사항을 구현할 수 있기를 바라지만 이것이 항상 가능하지는 않다는 것을 알고 있습니다. 프레임워크를 사용하면 특별한 필요가 있을 때마다 사용자 정의 호버 레이블 확장을 만들 수 있습니다.
질문이 있거나 창작물을 공유하고 싶거나 다른 사용자의 의견을 확인하고 싶다면 여기에서 우리와 함께하세요. JMP 사용자 커뮤니티 . 다음번 멋진 그래프렛을 기대하겠습니다!