JSL을 사용하여 차트 플로팅 및 참조선 추가를 자동화할 수 있습니까?안녕,
나는 정기적으로 분포 차트를 그립니다.어떤 날에는 몇 개의 데이터 열만 얻었고 어떤 날에는 훨씬 더 많은 데이터를 얻었습니다.
개별 차트가 생성되면 가독성을 위해 각각의 최소/최대 Y축을 조정한 다음 몇 개의 참조선(기본적으로 USL 및 LSL 선)을 추가해야 합니다.잠시 후, 특히 데이터 열이 많아 지루해집니다.
프로세스 자체가 비교적 간단하고 반복적이므로 이 프로세스를 자동화할 수 있는 방법이 있는지 알고 싶습니다. 저는 JSL 스크립팅이 여기서 해결책이 될 수 있다고 생각합니다(저는 스크립팅을 처음 접했습니다).
이것이 내가 스크립트에서 수행하고 싶은 작업입니다.
1. 데이터의 각 열은 5개의 데이터 포인트로 구성되며, 첫 번째와 두 번째 행에는 각각 USL과 LSL이 포함되어 있습니다.
2. 스크립트는 데이터의 모든 열을 읽어야 합니다.
3. 모든 데이터에 대한 개별 분포 차트를 그립니다.
4. USL 및 LSL 참조선을 추가합니다. (여기서 선 두께와 색상을 설정할 수 있습니까?)
5. 그런 다음 Y축의 최소값을 LSL-0.003으로 변경하고 Y축의 최대값을 USL에서 USL+0.003으로 변경합니다.
JSL이 위와 같은 작업을 수행할 수 있나요?
감사합니다!
자동화 및 스크립팅Re: JSL을 사용하여 차트 플로팅 및 참조선 추가를 자동화할 수 있습니까?짧은 대답: JSL이 그렇게 할 수 있습니다.
Re: JSL을 사용하여 차트 플로팅 및 참조선 추가를 자동화할 수 있습니까?- 커뮤니티에 오신 것을 환영합니다
- 예, JMP 스크립트는 설명된 작업을 쉽게 수행할 수 있습니다.
- JMP는 각 차트에 USL 및 LSL 값을 자동으로 표시합니다.그러나 설명하신 데이터 구조는 JMP의 일반적인 구조가 아닙니다.USL 및 LSL 데이터를 가져와 각 열의 Spec Limits 열 속성으로 이동한 다음 데이터의 처음 2개 행을 삭제하기 위해 JSL을 스크립트에 추가하는 것은 매우 간단한 문제입니다.
- 귀하의 데이터 설명에는 각 데이터 열에 대해 3개의 데이터 포인트만 있다고 나와 있습니다.(LSL 및 USL 행을 뺀 5개의 데이터 포인트) 그리고 여기에서 분포 차트를 작성합니다.JMP 용어를 사용하면 분포 차트는 히스토그램 표시입니다.이것이 필요한 차트로 지정하는 것입니까?그렇다면 3개의 데이터 포인트에서 이 차트를 어떻게 생성합니까?
- 축 최소값과 최대값을 변경하는 것은 매우 쉽고 스크립트에 추가할 수 있습니다.
- 귀하가 초기 항목에서 설명한 내용에 대한 나의 해석은 완전히 틀렸을 수 있습니다.사용 중인 데이터의 샘플과 표시해야 하는 차트의 그림을 제공할 수 있다면 좋을 것입니다.
- JMP의 도움말 풀다운 메뉴에 있는 Discovering JMP 문서를 시간을 내어 살펴보는 것이 좋습니다.
Re: JSL을 사용하여 차트 플로팅 및 참조선 추가를 자동화할 수 있습니까?답장을 보내 주셔서 감사합니다.
4부에서는 설명을 잘 못해서 죄송합니다. 명확하게 말하면 각 열에는 7개의 데이터 행이 있습니다. 첫 번째 행은 LSL이고 두 번째 행은 USL입니다. 3~7행은 실제 데이터입니다.
6번째 부분의 샘플 데이터와 결과 차트는 다음과 같습니다.


이 예의 차트에서는 데이터의 첫 번째 행과 두 번째 행도 표시되는데, 이는 원하지 않습니다. 각각 LSL과 USL입니다. 제가 일반적으로 하는 일은 데이터에 LSL과 USL을 포함하지 않는 것입니다.
Re: JSL을 사용하여 차트 플로팅 및 참조선 추가를 자동화할 수 있습니까?다음은 원하는 것을 생성하는 예제 스크립트입니다.

Names Default To Here( 1 );
// Create the data table
// dt = open( "<PATH to="" the="" file="" that="" has="" the="" data="https://community.jmp.com/">" );
// Here is the sample data table you provided
dt = New Table( "Example",
Add Rows( 7 ),
New Column( "Data1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9.5, 10.5, 10, 10.2, 9.7, 9.6, 10.4] )
),
New Column( "Data2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [4.5, 5.5, 5, 5.1, 5.2, 4.9, 4.7] )
)
);
// Ge all of the numeric column's names
colNameList = dt << get column names( string, continuous );
//Take the data from rows 1 & 2 and create the Spec Limints column property
For Each( {col}, colNameList,
Eval(
Substitute(
Expr(
Column( dt, col ) << set property(
"Spec Limits",
{LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )}
)
),
Expr( _LSL_ ), As Column( dt, col )[1],
Expr( _USL_ ), As Column( dt, col )[2]
)
)
);
// Exclude and Hide row 1 & 2 to eliminate them from Distributions
dt << Select rows( {1,2} );
dt << hide and exclude;
// Run the Distribution Platform, having the Spec Limits as
// Column Properties, will insure the proper Min and Max for
// the Y axis
dt << Distribution( column( eval(colNameList) ));</PATH>Re: JSL을 사용하여 차트 플로팅 및 참조선 추가를 자동화할 수 있습니까?오 와우.. 나는 확실히 당신이 대본을 작성할 것이라고 기대하지 않았습니다. 감사합니다!
스크립트의 앞부분이 앞서 제공한 데이터의 예제 테이블을 생성하는 것에 관한 것임을 보았습니다. 내가 선택한 기존 데이터 테이블(.jmp 파일이라고 가정)을 가리키도록 스크립트를 요청한 다음 실행하려면 어떻게 수정해야 합니까?
Re: JSL을 사용하여 차트 플로팅 및 참조선 추가를 자동화할 수 있습니까?테이블 열기: 스크립팅 가이드 > 데이터 테이블 > 데이터 테이블 시작하기 (사용 열려 있는() )
사용자 선택에서 경로 가져오기 파일 선택()
Re: JSL을 사용하여 차트 플로팅 및 참조선 추가를 자동화할 수 있습니까?내 생각에는 다른 스레드에서 답변하는 데 도움을 준 또 다른 코드 세트를 통합해야 한다는 것입니다.
If( Is Missing( fn ),
throw(),
// Else Open the selected file
Open( fn )
);
파일을 연 후 데이터 테이블로 로드해야 할까요? dt 구문을 사용한다는 뜻인가요?
Re: JSL을 사용하여 차트 플로팅 및 참조선 추가를 자동화할 수 있습니까?Open()을 사용하여 데이터 테이블을 열고, 열린 다음 열린 데이터 테이블에 대한 참조를 반환합니다(파일 열기에 성공한 경우). 그런 다음 dt 변수에 저장됩니다.
dt = Open("myfile.jmp");Re: JSL을 사용하여 차트 플로팅 및 참조선 추가를 자동화할 수 있습니까?사용자가 열 데이터 파일(.jmp) 파일을 선택할 수 있도록 기여자 중 한 명이 이전에 공유한 스크립트를 수정했습니다(감사합니다).
Names Default To Here( 1 );
// Open a dialog to choose a .jmp file to open
// Get the filename of the .jmp file to open
dt = Pick File("Select a .jmp file to open", "", {"JMP Files|jmp;jsl;jrn", "All Files|*"}, 1, 0, "");
// If the user did not select a file, exit the script
If( Is Missing( dt ),
Throw(),
// Else Open the selected file
Open( dt )
);
// Get all of the numeric column's names
colNameList = dt << get column names( string, continuous );
// Take the data from rows 1 & 2 and create the Spec Limits column property
For Each( {col}, colNameList,
Eval(
Substitute(
Expr(
Column( dt, col ) << set property(
"Spec Limits",
{LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )}
)
),
Expr( _LSL_ ), As Column( dt, col )[1],
Expr( _USL_ ), As Column( dt, col )[2]
)
)
);
// Exclude and Hide row 1 & 2 to eliminate them from Distributions
dt << Select rows( {1,2} );
dt << hide and exclude;
// Run the Distribution Platform
dt << Distribution( column( eval(colNameList) ));스크립트를 실행할 때 다음 오류가 발생했습니다.
Send는 'Send'에 대한 액세스 또는 평가 시 스크립팅 가능한 개체를 기대합니다. dt << /*###*/열 이름 가져오기(문자열, 연속형) /*###*/
dt << 열 이름 가져오기에 문제가 있는 것 같나요?
Re: JSL을 사용하여 차트 플로팅 및 참조선 추가를 자동화할 수 있습니까?파일 경로가 dt이므로 문자열입니다. 아래와 같이 새로 열린 파일을 참조하도록 해야 합니다. Open() 문을 확인하세요.
Names Default To Here( 1 );
// Open a dialog to choose a .jmp file to open
// Get the filename of the .jmp file to open
dt = Pick File("Select a .jmp file to open", "", {"JMP Files|jmp;jsl;jrn", "All Files|*"}, 1, 0, "");
// If the user did not select a file, exit the script
If( Is Missing( dt ),
Throw(),
// Else Open the selected file
dt = Open( dt )
);
// Get all of the numeric column's names
colNameList = dt << get column names( string, continuous );
// Take the data from rows 1 & 2 and create the Spec Limits column property
For Each( {col}, colNameList,
Eval(
Substitute(
Expr(
Column( dt, col ) << set property(
"Spec Limits",
{LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )}
)
),
Expr( _LSL_ ), As Column( dt, col )[1],
Expr( _USL_ ), As Column( dt, col )[2]
)
)
);
// Exclude and Hide row 1 & 2 to eliminate them from Distributions
dt << Select rows( {1,2} );
dt << hide and exclude;
// Run the Distribution Platform
dt << Distribution( column( eval(colNameList) ));Re: JSL을 사용하여 차트 플로팅 및 참조선 추가를 자동화할 수 있습니까?더 관련성이 높은 제목의 새 스레드로 이동했습니다.
Re: JSL을 사용하여 차트 플로팅 및 참조선 추가를 자동화할 수 있습니까?이 코드는 좀 더 깔끔합니다.
// Get the filename of the .jmp file to open
filename = Pick File("Select a .jmp file to open", "", {"JMP Files|jmp;jsl;jrn", "All Files|*"}, 1, 0, "");
// If the user did not select a file, exit the script
If( Is Missing( filename ),
Throw(),
// Else Open the selected file
dt = Open( filename )
);