JSL(그래프 빌더)에서 범례 이름을 변경하는 방법은 무엇입니까?CSV 파일(많은 열, 많은 행)에서 많은 데이터를 얻고 그래프 생성을 표준화하기 위해 JSL의 기본 템플릿에서 작업하고 있습니다. (축 크기 조정, 축 이름 바꾸기, 선 색상 표준화 등...) 평균적으로 하루에 하나의 CSV 파일을 얻을 수 있으므로 데이터를 JMP 데이터 테이블에 넣고 스크립트를 실행하고 그래프 출력을 모두 자동화하고 싶습니다.
내 JMP 파일에는 기본적으로 그래프 범례로 전혀 유익하지 않은 열 머리글로 태그 이름이 있습니다. 한 가지 방법은 모든 열의 이름을 바꾸는 것일 수 있지만 저는 태그 이름을 유지하고 Legend Settings에서 텍스트를 직접 조작하는 것을 선호합니다. (그러나 수동이 아닌 JSL로 수행됩니다.)
예를 들어 범례 상자에 쉽게 액세스할 수 있습니다.
gbR = gb << Report; // gbR << Show Tree Structure;
s = gbR[legendbox(1)];
s << Set Title("new title");첨부된 PNG에서 아이디어를 볼 수 있습니다.
내가 막힌 곳은 JSL을 사용하여 조작하고 변경할 수 있도록 범례 상자의 텍스트(제목 제외)에 액세스하는 방법입니다.
그래프 빌더에 의해 생성된 스크립트가 "범례 모델" 및 "레벨 이름"에 대해 말하는 것을 보았지만 내가 시도한 많은 것들에서 성공하지 못했습니다.
이에 대한 지침을 주시면 감사하겠습니다.
말했듯이 JSL을 사용하여 범례 텍스트에 액세스하여 기본값에서 변경하는 방법은 무엇입니까?
감사해요.
대량 맞춤화Re: JSL(그래프 빌더)에서 범례 이름을 변경하는 방법은 무엇입니까?이 무차별 대입 스크립트 ~에서 @txnelson 수준 항목 텍스트에 대해 유사한 작업을 수행하는 데 도움이 될 수 있습니다. 해당 스레드의 스크립트는 특정 법적 항목을 표시하지 않는 것에 대해 이야기하지만 레벨 항목에 대한 표현식 내에서 유사한 전략을 사용할 수 있습니다.
Re: JSL(그래프 빌더)에서 범례 이름을 변경하는 방법은 무엇입니까?스크립팅으로 하고 싶다면 정확히 그 방식(표현식 사용)을 해야 한다고 생각합니다. 그래프의 스크립트를 저장하고 대괄호 사이에 입력된 레벨 이름을 구문 분석하고 이를 추출하여 대체할 수 있습니다. 그런 다음 수정된 스크립트를 다시 채우거나 다시 실행합니다. 이렇게 하면 매번 각 시나리오에 대해 수동으로 정의하는 대신 변경해야 할 사항에 반응하는 매우 일반적인 스크립트를 가질 수 있습니다. 그러나 해야 할 일이 더 많습니다.
사용 가능한 범례 속성에 속성으로 텍스트가 없는 것 같습니다.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Variables( X( :age ), Y( :height ), Y( :weight, Position( 1 ) ) ),
Elements( Line( X, Y( 1 ), Y( 2 ), Legend( 4 ) ) )
);
r = Report( gb )[LegendBox( 1 )];
r << get properties();
/*
["Background Color" => 2147483647,
"Border" => {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}, "Enabled" => 1,
"Horizontal Alignment" => "Default",
"Margin" => {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}, "Padding" => {Left( 0 ),
Top( 0 ), Right( 0 ), Bottom( 0 )}, "Text Color" => 2147483647,
"Vertical Alignment" => "Default",
"Visibility" => "Visible"]
*/
그리고 당신이 사용하는 경우
r << legend settings
확인/취소 버튼을 누를 때까지 JMP의 모든 작업을 차단하는 창이 나타납니다. 따라서 해당 창의 내부 부분에 액세스할 수 없습니다. 이것이 가능하다는 내 의심을 증가시키는 또 다른 점은 수동으로 변경했는지 여부에 관계없이 범례의 트리 구조가 여전히 "Mean(...)"을 표시한다는 것입니다. 따라서 초기 레이블 위에 숨겨진 무언가가 있는 것 같습니다. 아니면 다른 이유가 ...
추가해주세요 위시리스트 JSL로 범례 텍스트를 변경할 수 있도록 설명합니다. 또한 기술 지원에 보낼 수도 있습니다( support@jmp.com ). 이유를 설명하는 것을 잊지 마십시오. 이렇게 하면 더 높은 우선 순위를 얻을 수 있는 기회가 증가합니다. 감사해요
Re: JSL(그래프 빌더)에서 범례 이름을 변경하는 방법은 무엇입니까?죄송합니다. 이는 JMP 16의 새로운 기능입니다. 방금 추가되었고 JMP 15에서는 사용할 수 없다는 사실을 몰랐습니다. JMP 16을 사용할 수 있을 때까지 첫 번째 방법을 시도해야 합니다. 다시 한 번 잘못된 정보에 대해 사과드립니다.
Re: JSL(그래프 빌더)에서 범례 이름을 변경하는 방법은 무엇입니까?친애하는 폴,
첨부된 PNG에서 그래프 빌더 출력을 볼 수 있습니다. 구문을 사용하거나 사용하지 않고 실행합니다.
lgnd = gb << Get Legend Display;
item1 = lgnd << Get Item( 4, 1 );
item1 << Set Label("Line 1");
item2 = lgnd << Get Item( 4, 2 );
item2 << Set Label("Line 2");나는 범례의 텍스트에서 아무런 차이가 없으며 구문의 논리를 따르지만 그로부터 어떤 효과도 보지 못합니다.
두 번째 PNG에서 전체 구문을 실행한 후 볼 수 있다고 생각한 것을 볼 수 있습니다.
그래도 이 문제를 조사하고 방법을 알려주시면 매우 감사하겠습니다. 고마워, 스캇.
Re: JSL(그래프 빌더)에서 범례 이름을 변경하는 방법은 무엇입니까?이것은 또 다른 가능성입니다.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Variables( X( :age ), Y( :height ), Y( :weight, Position( 1 ) ) ),
Elements( Line( X, Y( 1 ), Y( 2 ), Legend( 4 ) ) )
);
lgnd = gb << Get Legend Display;
item1 = lgnd << Get Item( 4, 1 );
item1 << Set Label("Line 1");
item2 = lgnd << Get Item( 4, 2 );
item2 << Set Label("Line 2");
Get Item의 첫 번째 숫자는 Graph Builder의 Legend 매개변수 값입니다. 두 번째 숫자는 해당 범례에 대한 인덱스가 될 것입니다. 항상 모든 범례를 표시하는 것은 아니기 때문에 때때로 이 숫자를 올바르게 얻는 것이 까다로울 수 있습니다. 범례의 전체 목록을 보려면 범례 설정으로 이동하십시오.
Re: JSL(그래프 빌더)에서 범례 이름을 변경하는 방법은 무엇입니까?감사해요. 예, 확실히 가능합니다. 다른 그래프를 염두에 두고 있기 때문에 범례 텍스트에 대해 원하는 이름을 캡처하려면 변수가 필요할 것 같습니다.
예를 들어 Graph Builder 구문의 예에 따라 다음과 같습니다.
_Legend1 = "abcd";
_Legend2 = "efgh";
그렇다면 변수 사용을 관리하기 위해 아래를 사용해야 합니까?
Eval(
Substitute(
Expr(
마지막으로, 이 옵션이 범례 텍스트를 보다 "직접" 조작할 수 있는 유일한 방법입니까?
Re: JSL(그래프 빌더)에서 범례 이름을 변경하는 방법은 무엇입니까?그래프 빌더 스크립트에서 다음과 같은 작업을 수행할 수 있습니까?
Graph Builder(
Variables( X( :age ), Y( :height ), Y( :weight, Position( 1 ) ) ),
Elements( Line( X, Y( 1 ), Y( 2 ), Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
4,
Level Name( 0, "abcd", Item ID( "Mean(height)", 1 ) ),
Level Name( 1, "efgh", Item ID( "Mean(weight)", 1 ) )
)}
),
Dispatch( {}, "400", LegendBox, {Set Title( "My Title" )} )
)
);Re: JSL(그래프 빌더)에서 범례 이름을 변경하는 방법은 무엇입니까?분명한 것을 놓치지 않았다는 것을 확인해 주셔서 감사합니다.
불행히도 "값 레이블"이 내가 달성하고자 하는 것을 어떻게 수행할 수 있는지 알 수 없습니다(또는 볼 수 없습니다). 내 목표는 열 제목 아래 행에 있는 데이터 값을 조작하는 것이 아니라 열 이름을 효과적으로 수정하는 것입니다.
주어진 열에 대해 "이름 설정"을 사용하면 범례의 텍스트에 몇 가지 값이 있는 간단한 테이블을 만드는 경우 예를 들어 "열(dt, 1) << 이름 설정("새 이름");" 이 한 줄의 구문으로 인해 열 1의 데이터 업데이트에 대한 텍스트가 "새 이름"이 됩니다.
내 실제 데이터의 그래프에는 "Mean(...Tag Name...)" 유형의 범례 텍스트가 있습니다. 내 실제 데이터에 << 이름 설정을 사용하면 "Mean(... 열 이름 ...)"이 포함되어 있기 때문에 여전히 문제가 있는 범례 텍스트가 있습니다.
주어진 열에 대한 범례 텍스트를 조작하는 방법에 대한 아이디어는 알고 있으면 좋을 것입니다. 아마도 나는 "자체 제작" 범례의 모든 속성에 액세스하고 조작할 수 있도록 처음부터 범례를 만들 것입니다. 새 그래프를 만들 때마다(아마도 매일) 수동으로 주의를 기울여야 하는 것이 아니라 스크립팅된 것이었으면 합니다.
Re: JSL(그래프 빌더)에서 범례 이름을 변경하는 방법은 무엇입니까?범례 Box()에 대한 스크립팅 인덱스의 세부 정보에는 범례의 실제 레이블 변경을 허용하는 메시지가 표시되지 않습니다. 그러나 범례의 값은 데이터 테이블의 값에서 직접 가져오므로 데이터 테이블의 값을 변경/재코딩하거나 "값 레이블" 열 속성을 설정할 수 있습니다.