☐ 멋진 새 기능 - 아니요, 하지만:
:raising_hands: 많은 사용자에게 도움이 될 수 있습니다 !!!!
✓ "버그"처럼 느껴지는 것을 제거합니다.
☐ 가지고 있어서 좋다
☐ 아무도 필요하지 않아
이 위시리스트 요청에 영감을 준 것은 무엇입니까?
사용자가 X 또는 Y 축의 레이블을 다른 위치로 드래그하여 그래프 빌더에서 서브플롯의 순서를 변경하면 이상한 일이 발생합니다.
https://community.jmp.com/t5/Discussions/Graph-Builder-settings-for-new-FrameBoxes/mp/561610/highlight/true#M77469
이 예에서는
- Y축의 "높이"를 위로 드래그하면 색상이 재설정됩니다(!!)
- X축의 "높이"를 오른쪽으로 드래그해도 색상이 재설정되지 않습니다(?
)
- X축의 "높이"를 잡고 놓으면 색상이 재설정됩니다 (!!!)
또한 새 하위 플롯을 추가할 때 플롯이 어떻게 보일지는 거의 도박입니다.
색상/마커 설정이 새 하위 플롯에 복제됩니다 .드래그 앤 드롭으로 변수를 추가한 경우
- 기존 X 변수 오른쪽
- 기존 Y 변수의 맨 아래
새 변수가 추가되면 설정이 복제되지 않습니다.
- 기존 X 변수의 왼쪽 에 있습니다.
- 기존 Y 변수 위에 위치(사용 사례의 99% !!!)
당신이 보고 싶은 개선점은 무엇입니까?
문제를 해결해주세요!
사용자가 하위 플롯의 순서를 변경하거나 새 변수를 추가하면 도자기 레이어 의 모든 것이 예상대로 작동하도록 배관 레이어 에서 일부 작업이 수행되어야 합니다.
이 아이디어가 왜 중요한가요?
1) 서브플롯의 순서를 변경할 때 모든 사용자는 서브플롯의 위치만 변경되기를 기대합니다. 누구도 색상 설정이 변경될 것이라고 예상하지 않습니다.
2) 사용자가 x축이나 y축에 변수를 추가할 때 결과를 예측할 수 있어야 합니다. 결과는 동일해야 합니다. 기존 변수의 왼쪽, 오른쪽, 위쪽 또는 아래쪽에 새 변수를 추가하는지에 관계없이 동일해야 합니다.
그 밖의 소원 
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Size( 534, 496 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 9 ) ) )
);
// change color/marker settings
scalebox = gb << get legend server();
scalebox << Legend Model(
9,
Properties( 0, {Line Color( 43 ), Marker( "Down Triangle" )}, Item ID( "F", 1 ) ),
Properties( 1, {Line Color( 0 ), Marker Size( 10 )}, Item ID( "M", 1 ) )
);
// add second Y variable
gb << add variable( {:height, Role( "Y" )} );
gb << add variable( {:sex, Role( "X" )} );
Wait( 0 );
New Window( "Modal Dialog example",
<<TYPE></TYPE>
이 문제를 가지고 놀면서 Jmp가 왜 이렇게 행동하는지 더 잘 이해하게 되었습니다.
첫 번째 게시물에서 스크립트를 실행한 후 그래프 빌더 보고서의 소스 코드는 다음과 같습니다.
Graph Builder(
Variables( X( :height ), X( :sex ), Y( :weight ), Y( :height ), Color( :sex ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 9 ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 10 ) ) ),
Elements( Position( 2, 1 ), Points( X, Y, Legend( 11 ) ) ),
Elements( Position( 2, 2 ), Points( X, Y, Legend( 12 ) ) ),
SendToReport(
Dispatch( {}, "400", ScaleBox,
{Legend Model(
9,
Properties(
0,
{Line Color( 43 ), Marker( "Down Triangle" )},
Item ID( "F", 1 )
),
Properties(
1,
{Line Color( 0 ), Marker Size( 10 )},
Item ID( "M", 1 )
)
)}
)
)
);범례 #9가 있는 첫 번째 서브플롯에는 특별한 선 및 마커 설정이 있지만 다른 서브플롯(범례 #10-12)에는 없다는 것을 알 수 있습니다. 따라서 설정 #9는 동일한 색상 열을 공유하므로 동일한 범례 항목을 공유하기 때문에 다른 하위 플롯에 자동으로 "브로드캐스트"됩니다.
이는 설정이 먼저 적용된 다음 새 하위 플롯이 생성되었기 때문입니다. 사용자가 범례의 단일 항목 집합으로 설정을 변경하는 경우에도 마찬가지입니다.

그런 다음 새 설정이 모든 플롯에 동시에 적용되며 스크립트에서 변경 사항은 첫 번째 범례 #에 대해서만 나타납니다.
사용자가 각 서브플롯에 대한 범례 항목을 활성화하면 서브플롯을 별도로 변경할 수 있습니다.

이제 다른 플롯(아래 코드)으로 전환하여 무슨 일이 일어나는지 알아봅시다. 여기에서 모든 서브플롯에는 자체 형식(공통 색상 열 없음)이 있으며 서브플롯 그룹 중 하나(Y축의 한 열)를 가져와 다른 위치로 드래그하면 다른 서브플롯은 해당 설정을 유지 하고 이동된 서브플롯만 잊어버립니다. 그들의 설정.
이는 허용되는 동작입니다 (**). 왜냐하면 열을 완전히 다른 위치(나중에 비디오에서 x축)로 끌 수도 있기 때문입니다. 그러면 아무도 서식이 복사될 수 있다고 기대하지 않을 것입니다.
비디오가 끝나면 기둥이 원래 위치로 다시 배치되고 플롯이 이전과 다르게 보입니다. 이것은 어쨌든 괜찮습니다. 우리는 이미 그런 행동을 받아들였기 때문에 그래야 합니다(**).:)
조금 놀랍습니다.
주의: 이전 플롯을 다시 가져오려면 CTRL + Z를 누르거나 열을 드래그하는 동안 ESC를 누르십시오.
dt = new table();
dt << add rows(1);
c1= dt << new column ("col1",Nominal,set each value (1));
c2= dt << new column ("col2",Nominal,set each value (2));
c3= dt << new column ("col3",Nominal,set each value (3));
c4= dt << new column ("col4",Nominal,set each value (4));
c5= dt << new column ("col5",Nominal,set each value (5));
c6= dt << new column ("col6",Nominal,set each value (6));
Graph Builder(
Size( 330, 347 ),
Show Control Panel( 0 ),
Graph Spacing( 10 ),
Variables(
X( :col1 ),
X( :col2 ),
X( :col3 ),
Y( :col6 ),
Y( :col5 ),
Y( :col4 )
),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 7 ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 1 ) ) ),
Elements( Position( 1, 3 ), Points( X, Y, Legend( 2 ) ) ),
Elements( Position( 2, 1 ), Points( X, Y, Legend( 8 ) ) ),
Elements( Position( 2, 2 ), Points( X, Y, Legend( 3 ) ) ),
Elements( Position( 2, 3 ), Points( X, Y, Legend( 4 ) ) ),
Elements( Position( 3, 1 ), Points( X, Y, Legend( 9 ) ) ),
Elements( Position( 3, 2 ), Points( X, Y, Legend( 5 ) ) ),
Elements( Position( 3, 3 ), Points( X, Y, Legend( 6 ) ) ),
SendToReport(
Dispatch( {}, "400", ScaleBox,
{Legend Model(
7,
Properties(
0,
{Line Color( 3 ), Marker( "Backslash" ),
Marker Size( 30 )},
Item ID( "col6", 1 )
)
), Legend Model(
1,
Properties(
0,
{Line Color( 38 ), Marker( "Filled Left Triangle" ),
Marker Size( 30 )},
Item ID( "col5", 1 )
)
), Legend Model(
2,
Properties(
0,
{Line Color( 36 ), Marker( "Slash" ), Marker Size( 30 )},
Item ID( "col4", 1 )
)
), Legend Model(
8,
Properties(
0,
{Line Color( 3 ), Marker( "Filled Up Triangle" ),
Marker Size( 30 )},
Item ID( "col6", 1 )
)
), Legend Model(
3,
Properties(
0,
{Line Color( 38 ), Marker( "FilledCircle" ),
Marker Size( 30 )},
Item ID( "col5", 1 )
)
), Legend Model(
4,
Properties(
0,
{Line Color( 36 ), Marker( "Filled Down Triangle" ),
Marker Size( 30 )},
Item ID( "col4", 1 )
)
), Legend Model(
9,
Properties(
0,
{Line Color( 3 ), Marker( "Slash" ), Marker Size( 30 )},
Item ID( "col6", 1 )
)
), Legend Model(
5,
Properties(
0,
{Line Color( 38 ), Marker( "Filled Right Triangle" ),
Marker Size( 30 )},
Item ID( "col5", 1 )
)
), Legend Model(
6,
Properties(
0,
{Line Color( 36 ), Marker( "Backslash" ),
Marker Size( 30 )},
Item ID( "col4", 1 )
)
)}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "1" )} ),
Dispatch( {}, "Y title", TextEditBox,
{Set Text( "6" ), Rotate Text( "Horizontal" )}
),
Dispatch( {}, "Y 1 title", TextEditBox,
{Set Text( "5" ), Rotate Text( "Horizontal" )}
),
Dispatch( {}, "Y 2 title", TextEditBox,
{Set Text( "4" ), Rotate Text( "Horizontal" )}
),
Dispatch( {}, "X 1 title", TextEditBox, {Set Text( "2" )} ),
Dispatch( {}, "X 2 title", TextEditBox, {Set Text( "3" )} )
)
)