그래프 빌더: 데이터가 없는 X 범주 숨기기여러분, 안녕하세요,
그룹화 열과 여러 응답 변수가 있는 테이블이 있습니다.
New Table( "Test",
Add Rows( 7 ),
New Column( "GROUP",
Character,
"Nominal",
Set Values( {"a", "b", "c", "d", "e", "f", "g"} )
),
New Column( "Y",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, ., 6, ., 4, ., 2] )
),
New Column( "Y 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, 6, 2, 3, ., ., .] ),
Set Display Width( 49 )
)
)열 전환기를 사용하여 막대 차트를 만들고 싶습니다.
Graph Builder(
Size( 527, 448 ),
Show Control Panel( 0 ),
Variables(
X( :GROUP, Order By( :Y, Ascending, Order Statistic( "Mean" ) ) ),
Y( :Y )
),
Elements( Bar( X, Y, Legend( 4 ) ) ),
Column Switcher( :Y, {:Y, :Y 2} )
)내 문제는 데이터가 없는 레벨을 표시하고 싶지 않다는 것입니다. 즉, Y의 경우 "b", "d" 및 "f" 레벨을 보고 Y2의 경우 "e", "f", "g" 레벨을 보고 싶지 않습니다.

"where" 절을 사용하려고 했지만 불행히도 열 전환기에서 이를 고려하지 않았습니다.
우리가 어떻게 그렇게 할 수 있는지 아시나요?
미리 감사드립니다!
답: 그래프 빌더: 데이터가 없는 X 범주를 숨깁니다.안녕 @geoffrey_mann ,
귀하의 참여와 추가 정보에 감사드립니다.
나는 표를 얻기 위해 동료들에게 이 기능을 광고하기 시작할 것입니다! 
스크립트에 관해서는 현재 테이블에 영향을 주지 않는 것을 선호하므로 로컬 데이터 필터가 좋은 옵션이라고 생각합니다! 나는 이 가능성을 더 깊이 탐구할 것이다.
답: 그래프 빌더: 데이터가 없는 X 범주를 숨깁니다.안녕 @anne_sa
도움이 되었다니 정말 기쁘네요. 예전부터 하고 싶었던 일인데 동기를 부여해 주셨네요. 
또한 나는 당신의 의견에 동의합니다. @vince_faller 열 전환기 주변의 사용자 정의 동작에 대한 리스너 또는 방법은 일반적으로 자체 추가 기능을 프로그래밍하거나 동작을 변경하는 사람들에게 유용할 것입니다. 우리는 JMP Clinical과 JMP Genomics에서 항상 이 작업을 수행합니다. @kelci_miclaus 그리고 @drewfoglia 내가 빌린 코드에 대해.
이를 실현하는 데 도움을 줄 수 있는 JMP 제품 관리자를 알았더라면 좋았을 텐데요.
두 분 모두 해당 기능에 투표해 주시면 정당성을 입증하는 데 도움이 될 것입니다.
최종 변경 사항에 관해서는 작성한 래퍼 코드를 제어할 수 있어야 합니다. API 호출은 단순히 X 및 Y 변수를 대체하기 위한 것입니다. 프로그래머가 GraphBuilder 래핑을 단순화하여 추가 기능을 더 빠르게 구축할 수 있도록 이러한 기능을 계속 추가할 것입니다. 여기서 내가 말하려는 것은 API 파일에서 GraphBuilder를 업데이트하는 기능을 추가하여 사용하는 모든 "드라이버" 파일이 선택 동작을 갖도록 하는 것입니다. dt <
드라이버 파일의 명확한 행 상태를 확인하세요.
dt << clearrowstates();
newvarname = lb<<GETSELECTED></GETSELECTED>
당신이 하려는 일에 대한 나의 "단순한" 이해를 바탕으로 dt < 제외 해제 (); 이것이 귀하가 선호하는 동작인지 아니면 그보다 더 복잡한 것인지 알려주세요.
답: 그래프 빌더: 데이터가 없는 X 범주를 숨깁니다.네 말에 전적으로 동의 해 @vince_faller , 아주 좋은 기능이 될 것 같아요 
JMP 위시리스트에 추가할 것 같아요!
답: 그래프 빌더: 데이터가 없는 X 범주를 숨깁니다.이 스크립트를 제공해 주셔서 대단히 감사합니다. @geoffrey_mann
제가 한 것보다 확실히 깨끗하네요!
조정하고 싶은 것이 한 가지 있습니다. 목록 상자에서 새 변수를 선택할 때마다 행 상태가 재설정됩니다. 따라서 일부 포인트에 라벨이 지정되거나 제외되거나 색상이 지정되면... 이 정보가 손실되어 짜증날 수 있습니다.
그렇지 않으면 내 기대와 일치하므로 다시 한번 감사드립니다!
답: 그래프 빌더: 데이터가 없는 X 범주를 숨깁니다.열 스위치에 <답: 그래프 빌더: 데이터가 없는 X 범주를 숨깁니다.
다시 안녕 @anne_sa ,
늦어서 죄송합니다. 실제로 며칠 동안 독감에 걸려 조금 뒤쳐졌습니다.
파일 2개를 첨부했습니다. 첫 번째 jsl 파일(행 States.jsl 변경을 위한 예제 스크립트)은 드라이버 파일이고 두 번째 줄의 경로는 두 번째 파일(GraphBuilderJSLAPI.jsl)을 배치하는 위치의 전체 경로입니다.
//Include script to modify GraphBuilder with some special functions defined
include(ConvertFilePath("/Users/gemann/Projects/Prototypes/JSLClasses/GraphBuilderJSLAPI.jsl", absolute, windows));
//Create a sample table
dt = New Table( "Test",
Add Rows( 7 ),
New Column( "GROUP",
Character,
"Nominal",
Set Values( {"a", "b", "c", "d", "e", "f", "g"} )
),
New Column( "Y",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, ., 6, ., 4, ., 2] )
),
New Column( "Y 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, 6, 2, 3, ., ., .] ),
Set Display Width( 49 )
)
);
//Add a new window and build a listbox beside a graphbuilder
New Window( "CustomColumnSwitcher Window",
//Start by getting all of the columns in the current datatable
CNames = dt << Get Column Names( Numeric );
Show( CNames );
//User a horizontal layout
HListBox(
//Use a ListBox as the new Column Switcher
lb = List Box(
CNames,
maxSelected(1),
//The next lines specify the script that gets run when an item in listbox is selected
dt << clearrowstates();
newvarname = lb<<GETSELECTED></GETSELECTED>
행운을 빌어요. 문제가 있으면 알려주세요. 물론 이 파일들은 완전히 테스트되지 않았습니다!!! 
답: 그래프 빌더: 데이터가 없는 X 범주를 숨깁니다.안녕 @geoffrey_mann ,
기본적으로 열 전환기를 업데이트하고 축 설정을 변경하는 내용을 작성했습니다(에서 제안한 대로). @줄리안 ) 새 변수를 선택할 때마다. 그러나 이는 매우 효율적이지 않을 수 있으므로 귀하의 솔루션에 매우 관심이 있습니다!
답: 그래프 빌더: 데이터가 없는 X 범주를 숨깁니다.안녕 앤,
문제에 대한 코딩 솔루션을 찾았는지 확인하기 위해 다시 확인하고 싶었습니다. 시간을 찾는 데 시간이 좀 걸렸지만 여전히 필요한 경우 코딩 솔루션이 있습니다.
답: 그래프 빌더: 데이터가 없는 X 범주를 숨깁니다.안녕 @줄리안 !
내 문제를 해결하기 위한 귀하의 노력에 진심으로 감사드립니다! 불행하게도 누락되지 않은 수준의 수는 반응 변수마다 다를 수 있습니다. 그러나 마지막 게시물은 확실히 "코딩 솔루션"에 사용될 수 있습니다. 레벨 번호에 따라 축 설정을 변경하는 것은 실제로 예상되는 내용을 표시하는 좋은 방법입니다. 나는 그 방향으로 일할 것이다. 당신의 도움을 주셔서 감사합니다!
답: 그래프 빌더: 데이터가 없는 X 범주를 숨깁니다.안녕 @anne_sa ,
무슨 뜻인지 알겠습니다. 실제로는 사용자 정의 코딩으로 귀결될 수도 있지만 이에 대해 한 번 더 대화식으로 설명하겠습니다. 각 Y에 대해 그룹의 수준은 항상 4개(다양한 수준임에도 불구하고)만 있습니까? 그렇다면 잠재적인 해킹 방법은 다음과 같습니다. Graph Builder는 열 전환 시 X축을 유지하며 수준이 오름차순으로 정렬되어 있으므로(따라서 빈 수준은 항상 끝에 있음) 4개의 수준만 표시되도록 축을 조정할 수 있습니다. . 축 설정에서 이 작업을 수행할 수 있습니다(축 > 축 설정을 마우스 오른쪽 버튼으로 클릭). 또는 누락된 수준이 숨겨질 때까지 축 끝을 드래그하여 수행할 수 있습니다.
Graph Builder(
Show Control Panel( 0 ),
Variables( X( :GROUP, Order By( :Y, Ascending, Order Statistic( "Mean" ) ) ), Y( :Y ) ),
Elements( Bar( X, Y, Legend( 4 ) ) ),
Column Switcher( :Y, {:Y, :Y 2} ),
SendToReport( Dispatch( {}, "GROUP", ScaleBox, {Min( -0.5 ), Max( 3.5 ), Inc( 1 ), Minor Ticks( 0 )} ) )
);

귀하의 경우 잠재적인 해결책이 있을까요?
@줄리안
답: 그래프 빌더: 데이터가 없는 X 범주를 숨깁니다.감사해요 @줄리안 이 제안에! 실제로 데이터가 있는 레벨만 표시할 수 있습니다.
유일한 문제(아마도 내가 너무 많이 요구하는 것일 수도 있음)는 행 사이의 연결이 끊어진다는 것입니다. 예를 들어 Y에 대해 "a" 수준을 선택하고 Y2에 해당하는 값을 보려는 경우 로컬 데이터 필터로 Y2를 선택하면 아무 것도 강조 표시되지 않습니다.
어쩌면 예상되는 동작을 코딩하는 것이 해결책일 수도 있습니다.
답: 그래프 빌더: 데이터가 없는 X 범주를 숨깁니다.안녕 @anne_sa ,
아시다시피 Graph Builder는 그룹화 변수의 해당 범주를 관찰하고 이를 도표화하도록 요구합니다(대개 좋은 일입니다). 왜냐하면 사용자가 테이블에 보관했기 때문에 해당 범주에서 값을 찾았다고 가정하기 때문입니다. 열 전환기를 사용하는 경우 다른 열 데이터가 존재하기 때문에 해당 행을 삭제하는 것만 큼 간단하지 않습니다. 한 가지 해결 방법은 누락된 행을 제거할 수 있도록 데이터를 재구성하는 것입니다. 나는 이것을 스태킹하여 할 것이다:
테이블 > 스택
Data Table( "Test" ) << Stack(
columns( :Y, :Y 2 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
그러면 아래와 같은 테이블이 반환됩니다.

누락된 셀을 마우스 오른쪽 버튼으로 클릭하고 일치 항목을 선택하여 누락된 값을 제거합니다. 그런 다음 해당 행을 삭제합니다. 그러면 첨부된 테이블이 반환됩니다. 이제 그래프를 작성하되 열 전환기 대신 로컬 데이터 필터를 사용하여 이전에 레이블 열에서 응답이었던 항목을 선택하세요.
Graph Builder(
Show Control Panel( 0 ),
Variables( X( :GROUP ), Y( :Data ) ),
Elements( Bar( X, Y, Legend( 4 ) ) ),
Local Data Filter(
Add Filter(
columns( :Label ),
Where( :Label == "Y" ),
Display( :Label, Size( 160, 17 ) )
)
)
);

누락된 행이 없으므로 그래프 빌더는 데이터로 채워진 그룹 수준만 표시합니다.물론 이를 Y의 여러 수준으로 일반화할 수 있습니다. 즉, 초기 단계에서 모든 수준을 쌓기만 하면 됩니다.
이게 도움이 되길 바란다!
@줄리안
답: 그래프 빌더: 데이터가 없는 X 범주를 숨깁니다.안녕 앤,
나는 지금 당신의 문제를 알고 있으며 여전히 그것을 살펴보고 있습니다. 나는 이것이 약간의 코딩이 필요할 것이라고 믿습니다.답: 그래프 빌더: 데이터가 없는 X 범주를 숨깁니다.답변해 주셔서 감사합니다. @geoffrey_mann
불행히도 열 전환기로 새 열을 선택할 때 로컬 데이터 필터는 여전히 Y를 기반으로 하기 때문에 내가 얻고 싶은 것이 정확히 아닙니다.
물론 로컬 데이터 필터를 수동으로 변경하는 것도 가능하지만 상당히 많은 수의 변수를 가질 수 있으므로 이를 자동으로 수행하는 방법이 있으면 좋을 것 같습니다. 
답: 그래프 빌더: 데이터가 없는 X 범주를 숨깁니다.안녕 앤,
"where" 절이나 일종의 필터가 필요하다는 귀하의 생각은 정확합니다. graphbuilder 스크립트에 다음 줄을 추가해 보세요:
Local Data Filter( Add Filter( columns( :Y ), Where( :Y >= 2 & :Y <= 7 ) ) )
로컬 데이터 필터가 괜찮기를 바라고 있습니까?
Graph Builder(
Size( 527, 448 ),
Show Control Panel( 0 ),
Variables(
X( :GROUP, Order By( :Y, Ascending, Order Statistic( "Mean" ) ) ),
Y( :Y )
),
Elements( Bar( X, Y, Legend( 4 ) ) ),
Column Switcher( :Y, {:Y, :Y 2} ),
Local Data Filter( Add Filter( columns( :Y ), Where( :Y >= 2 & :Y <= 7 ) ) )
);
제목: 그래프 작성기: 데이터가 없는 X개 범주 숨기기오래된 게시물이지만 여전히 도움이 될 수 있을 것 같습니다.
추가로, 해당 Y에 대해 누락된 값과 역수를 선택하는 로컬 데이터 필터를 사용할 수 있습니다.
Local Data Filter(
Inverse( 1 ),
Add Filter( columns( :Y1, :Y2 ), Select Missing( :Y2 ) )
),
Column Switcher( :Y2, {:Y1, :Y2, :Y3} )
또한 열 전환기의 다른 레벨을 선택할 때 발생하는 이벤트를 추가하여 관심 있는 모든 Y 변수에 대한 로컬 데이터 전환기 필터 설정을 변경할 수 있습니다. 다소 복잡한 방법일 수 있지만, 작동할 가능성은 있습니다.
제목: 그래프 작성기: 데이터가 없는 X개 범주 숨기기안녕하세요 @martindemel 님 ,
메시지 감사합니다. 꽤 오래된 게시물이지만, 같은 목표에 도달하는 다양한 방법을 알게 되어 항상 기쁩니다.