안녕하세요 JSL 커뮤니티!
나는 변형을 사용했다 동적 차트 범례 코드 클릭 한 번으로 그래프의 범례를 자동으로 변경하면 효과적입니다.
그러나 로컬 데이터 필터를 그래프에 포함하려고 할 때 어떤 이유로 이전 / 이전 범례의 테두리 상자가 필터를 클릭 한 후에 계속 나타납니다. 나는 발견했다 이전 토론 기본적으로 동일한 문제가 있지만 불행히도 2014 년의 추세는 독백이었고 모든 TS 단계를 시도했을 때 아무도 내 사건에 영향을 미치지 않습니다.
범례 자체는 정확하지만 (데이터에 올바른 색상과 마커가 표시됨) 보고서 창은 이전의 모든 테두리 상자로 매우 바쁩니다.
로컬 데이터 필터를 누른 후 불필요한 모든 "범례"를 삭제하기 위해 추가 버튼을 추가했지만 다른 필터를 칠 때마다 계속 다시 나타나는 해결 방법이 있습니다. 또한 로컬 데이터 필터 내에 "삭제"버튼에 대한 코드를 추가하지 못했습니다 (필터 기능을 사용할 때마다 불필요한 여분의 범례 상자가 모두 삭제됨).
그래프에서 이전 범례에 저장된 "메모리"를 삭제하는 방법이 있는지 궁금합니다. 또는이 경우 사용할 수있는 해결 방법이 있습니다.
도움과 지원에 미리 감사드립니다 !!!
로컬 데이터 필터를 사용하기 전에 그래프
로컬 데이터 필터 사용 후 그래프

사용중인 플랫폼과 범례 추가 방법을 보여주는 샘플 JMP 데이터 테이블 중 하나에서 작동하는 스크립트를 포함 할 수 있습니까?
답장을 보내 주셔서 감사합니다. 편의상이 코드를 사용하려고합니다. 우편 방금 그래프의 로컬 데이터 필터 섹션을 추가했습니다.
//Begin Script;
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
variables = {"age", "sex"};
// Initial nlevels is the number of levels of 'age', as it is the first by-group used.
fitVar = "age";
nlevels=6;
// Creating the legend. For each selection, the previous spline fits are removed, then
// new ones are generated.
BC_legend = Panel Box( "Choose Legend",
legend = Radio Box(
{"age", "sex"},
fitVar = legend << Get Selected;
Match( fitVar,
"age",
(Summarize(vals = By( :age ), c=count );
For(ii = nlevels, ii >=1, ii--,
obj << (Curve[1] << Remove Fit );
);
report(obj)[BorderBox(2)] << Delete;
report(obj)[FrameBox(1)] << Row Legend("age", color(1), marker(1));
obj << Group By( :age ) << Fit Spline( 0.1, standardized );
nlevels = nItems(vals);
),
"sex",
(Summarize(vals = By( :sex ), c=count );
For(ii = nlevels, ii >=1, ii--,
obj << (Curve[1] << Remove Fit );
);
report(obj)[BorderBox(2)] << Delete;
report(obj)[FrameBox(1)] << Row Legend("sex", color(1), marker(1));
obj << Group By( :sex ) << Fit Spline( 0.1, standardized );
nlevels = nItems(vals); )
);
));
// Fitting the initial Bivariate fit with 'age' as the by-group, adding the legend
// to control the selections.
nw = New Window( "BigClassBivariate",
HListBox(
obj = dt << Bivariate(
Y( :weight ),
X( :height ),
Group By( :age ),
Fit Spline( 0.1, standardized ),
Local Data Filter(
Location( {0, 0} ),
Mode( Select( 0 ), Show( 1 ), Include( 1 ) ),
Add Filter(
columns( :age ),
Display( :age, Size( 204, 200 ), List Display )
)
),
SendToReport(
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Frame Size( 493, 354 ),Marker Size( 2 ), Marker Drawing Mode( "Normal" ), Row Legend(
dt:(fitVar),
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 0 ),
Marker Theme( "Standard" ),
Continuous Scale( Cont ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
); ,
BC_legend
));
//End Script;
원본 게시물에 이미지를 올바르게 업로드하지 않았다는 것을 알지 못했습니다.
로컬 데이터 필터를 사용하기 전에 그래프

로컬 데이터 필터 사용 후 그래프

위의 코드를 예로 들어 보겠습니다. 인터페이스의 범례 선택 섹션에서 "나이"와 "성"사이를 몇 번 클릭 한 다음 로컬 필터와 "이전"범례 팝업을 사용하십시오.

먼저이 문제가 JMP 15에서 해결 된 것 같습니다. 다행히도 이전 버전에 대한 쉬운 해결 방법이 있습니다.
다음을 사용하여 이전 범례를 제거 할 때 :
report(obj)[BorderBox(2)] << Delete;
범례의 표시 부분은 제거되지만 DisplayFrame에는 여전히 기존 범례에 대한 핸들이 있으며 새 범례를 추가하면 이제 두 개가 있습니다. 데이터 필터를 터치하기 전에 이것을 볼 수도 있습니다. 보고서 용 스크립트를 저장하면 두 개의 RowLegend () 명령이 표시됩니다. 데이터 필터를 사용하거나 사용하지 않고 보고서에서 Redo Analysis를 사용하면 두 범례도 다시 나타납니다.
범례의 표시 부분이 아니라 범례가 완전히 제거되도록하려면 delete 상자를 다음과 같이 바꿉니다.
report(obj)[OwnerBox(1)] << Remove;
범례에서 마우스 오른쪽 버튼을 클릭 한 후 제거를 클릭하면 해당 항목이 올바르게 제거됩니다.
희망이 도움이됩니다!
그것은 효과가 있었다! !!! 정말 고마워 !!!! 내 코드는 지금 아름답습니다 !!!