JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성
인사말,
배경: 저는 반도체 장치에 대한 특정 RF 테스트의 결과인 매우 큰 데이터 세트를 가지고 있습니다. 이 RF 테스트 중에는 중요한 다양한 조건이 있습니다. 105개의 서로 다른 그래프를 생성해야 하는 6개의 서로 다른 테스트 상태에서 16개의 서로 다른 채널에서 테스트되는 3개의 출력이 있습니다.
예: 테스트 상태 1에서 채널 1의 이득 대 주파수; 15개 채널과 6개 테스트 상태가 있는 테스트 상태 1에서 채널 2의 이득 대 주파수.
나는 해결책을 찾기 위해 이 토론 게시판을 검색했고 내가 찾은 옷장은 2017년에 시작된 "라는 제목의 스레드입니다. JSL을 통해 JMP 그래프를 PPT로 내보내는 방법은 무엇입니까?"
도움이 되도록 이 솔루션에 사용된 스크립트를 통합하려고 시도했는데 필요한 수의 플롯을 만들 수는 있지만 필터링할 특정 채널을 가져올 수는 없습니다.
이 내용을 전달하는 데 어려움을 겪고 있는 것 같으니 설명이 필요하면 문의하세요.
감사해요
Summarize( dt, lstChannel = By( :channel ) );
gb = Graph Builder(
invisible,
Size( 1225, 952 ),
Show Control Panel( 0 ),
Variables(
X( :Name( "Freq _(GHz)" ) ),
Y( :Gain ),
Group X( :wafer_num ),
Overlay( :RowCol ) ),
Elements( Smoother( X, Y, Legend( 19 ) ) )
);
For( i = 1, i <= N Items( GroupBy ), i++,
gb << Local Data Filter(
columns(
:wafer_num,
:channel,
:RowCol),
Where( :channel == LstChannel[i] ) ),
// I would like to loop through the teststates as well
Where( :teststate == 1 ),
Mode( Show( 1 ), Include( 1 ) ) );
If( i == 1,
gb << Save Presentation( "$TEMP/jmp_example2.pptx" ),
gb << Save Presentation( "$TEMP/jmp_example2.pptx", Append )
);
gb << remove data filter;
);
Open( "$TEMP/jmp_example2.pptx" );Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성나머지 두 개는 안 붙은 것 같아요
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성항상 통찰력 있는 정보 감사드립니다. 당신이 나에게 가장 많은 도움을 준 사람이 된 것은 정말 행운이라고 생각합니다. 보세요, 저는 매우 다양한 소량의 제품이 혼합되어 있는 주조소의 산업 엔지니어이며 상당한 양의 RF 테스트를 수행합니다. 당신이 언급한 모든 것:
- 제어 또는 사양 한계와 같은 알려진 범위가 있습니다.
- +/- k 시그마와 같은 것으로 확장해야 합니다.
- 예를 들어 각 0.5 시그마의 그리드 라인과 같은 그리드 라인을 제어해야 합니다.
- 명목 값은 크지만 변동이 매우 작은 데이터(예: 평균 값은 1750222, 표준 편차는 0.000023), 그런 다음 변환 Y-평균을 플롯하고 좋은 척도를 파악하고 알고리즘인 gdinc.jsl을 사용합니다.
- 분석을 수행하고 데이터가 심하게 치우쳐 있거나 덩어리진(클러스터형)지 여부를 확인합니다.
제가 달성하려는 것은 테스트 중이고 고객이 데이터 없이 광범위한 사양 제한을 사용하고 있으므로 상한 및 하한 제어와 함께 +/- 3 시그마 및 +/- 4.5 시그마를 기반으로 사양 제한을 결정하려고 합니다. 제한.또 다른 예는 현재 사양 제한이 LSL = 20 및 USL = 40이기 때문에 분포도에 대한 X축 확장에 대해 문의한 것입니다. 품질 및 프로세스 유틸리티에 포함된 멋진 도구 덕분에 제가 열렬한 JMP 옹호자가 된 이유도 바로 여기에 있습니다.
나는 다변량 데이터 분석을 계획하는 것에 대해 전혀 알지 못하지만 그것을 소용돌이치게 할 것입니다.
사실 이 대화를 통해 내가 왜 다시 여기에 있는지 알게 되었습니다. 그래프 작성기 및 Fix Y by X 분석에 대한 분포에 대해 제공한 것과 동일한 플로팅 방법을 사용하는 것과 관련하여 귀하의 의견을 듣고 싶습니다. 우리의 경우에는 Wafer_number인 데이터 세트 간의 차이(통계적으로)를 볼 수 있으므로 이것이 매우 좋은 분석 도구라고 생각합니다. 물론 저는 각 쌍 학생의 T 테스트를 사용하여 평균을 비교합니다. 플러그앤플러그앤플레이를 해보았더니 디스패치 기능과 헷갈리네요..첨부된 내용은 출력 그림과 함께 내가 하려는 작업에 대한 데이터 테이블과 스크립트에 저장 창입니다. 다시 한 번 말씀드리지만, 귀하의 모든 도움은 매우 도움이 됩니다.
참고로 저는 매니저에게 심층적인 스크립트 작성 수업을 들을 수 있는지 물었고 그는 그렇다고 말했습니다. 추천할 만한 것이 있으면 알려주시기 바랍니다. 저는 메릴랜드 주 발리트모어 지역에 있습니다.
잉
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성잉,
찾고 있는 항목을 지정하지 않았습니다. 나는 일반적으로 JMP 기본 스케일링을 사용하고 모든 하위 그룹에 대해 동일한 축 스케일링을 원할 경우 다음과 같은 것을 사용합니다. 이 스크립트는 관심 있는 변수의 이름을 ylist로 지정하지만 이는 날짜/시간을 포함한 모든 숫자형 연속 변수(열)에 적용될 수 있습니다.비결은 JMP가 모든 것에 대해 크기를 조정하도록 한 다음 축 설정을 테이블 열에 복사하면 해당 열을 사용하는 모든 그래프가 해당 크기를 배포하는 것입니다.
Names Default to Here(1);
ylist = {"Sepal length", "Sepal width", "Petal length", "Petal width"};
dt = Open("$sample_data/iris.jmp");
//get common axis
for(i=1, i<=nitems(ylist), i++,
ovl = dt << Overlay Plot(Invisible,
Y( Column(dt,ylist[i]) ), //yaxis
Overlay( 0 )
);
report(ovl)[AxisBox(1)] << Save to Column Property;
ovl << close window;
);
//now the same axis will be applied to all sub groups
ovl1 = dt << OverlayPlot( Y( :Petal length ), Overlay(0), By(:Species) );
//all 3 subgroups have the same Y - axis
//ovl = dt << OverlayPlot( Y( eval(ylist) ), Overlay(0), By(:Species) );
다음과 같은 경우에만 축에 대한 사용자 정의 크기 조정을 수행합니다.
- 제어 또는 사양 한계와 같은 알려진 범위가 있습니다.
- +/- k 시그마와 같은 것으로 확장해야 합니다.
- 예를 들어 각 0.5 시그마의 그리드 라인과 같은 그리드 라인을 제어해야 합니다.
- 명목 값은 크지만 변동이 매우 작은 데이터(예: 평균 값은 1750222, 표준 편차는 0.000023), 그런 다음 변환 Y-평균을 플롯하고 좋은 척도를 파악하고 알고리즘인 gdinc.jsl을 사용합니다.
- 분석을 수행하고 데이터가 심하게 치우쳐 있거나 덩어리진(클러스터형)지 여부를 확인합니다.
이상값 탐지와 관련하여 모든 데이터에 적용되는 하나의 방법을 찾지 못했습니다. 오른쪽으로 치우친 데이터(예: 0으로 팽창된 포아송)가 있는 일변량 데이터의 경우 수정된 Lenth 방법을 사용하는 것을 좋아합니다.
- uscreen = 중앙값 + k * (상위 p 백분위수 - 중앙값) / Abs( 정규 분위수(p) )
- lscreen = 중앙값 - k * (중앙값 - 하위(p) 백분위수/Abs(정규 분위수(p))
- 여기서 p는 0.1(10 및 90 백분위수의 경우)이거나 p는 0.25일 수 있으며, 이는 수정된 의사 시그마가 되며 일반적으로 요약 데이터의 경우 k는 [4,6]에 있습니다. 원시 데이터에는 훨씬 더 큰 k를 사용하는 경우가 있습니다.
- 또한 일반적으로 한 변수의 모든 데이터를 선별하지만, 그룹별로 상당히 다른 경우에는 각 그룹에 대한 데이터가 충분하면 그룹별로 선별합니다.
다음은 그룹별 선별 값을 계산하는 예입니다. vargroup에 10개의 그룹이 있는 경우 uscreen과 lscreen은 크기가 10인 벡터이고 vg는 10개의 vargroup 이름 목록입니다.
//Find global outliers by vargroup for raw measurement data
//Use an assymetric 6 pseudo-sigma, computed from the 10 & 90th percentiles.
summarize( vg=by(vargroup),
c=count,
q10=quantile(varvalue,.10),
q50=quantile(varvalue,.50),
q90=quantile(varvalue,.90)
);
uscr = q50 + 6*(q90-q50)/Normal quantile(0.9);
lscr = q50 - 6*(q50-q10)/Normal quantile(0.9);참고:
- 정답이 있는 방법은 없으며 항상 데이터를 검토하는 사람들과 함께 방법을 검토해야 합니다. 그리고 이상값은 중요한 정보로 이어질 수 있으므로 절대 무시해서는 안 됩니다.
- 나는 종종 2가지 수준의 스크리닝을 사용합니다. 특히 제어 한계를 계산해야 할 때 플롯된 점에 대한 스크리닝과 한계 스크리닝이 필요합니다. 제어 한계는 5 및 6 시그마 데이터를 수용할 수 없습니다.
- 주간 분석을 생성하는 경우 매주 다른 선별 값을 얻을 수 있습니다. 매주 동일한 한도를 사용하면 대규모 분석을 수행할 수 있습니다.
- 다변량 데이터의 경우 다변량 화면을 사용해야 합니다. 그래픽을 참조하세요. 단변량 한계를 기반으로 두 개의 명백한 이상치가 제어됩니다. 따라서 데이터가 강하게 상관되어 있는 경우 상관된 화면을 사용해야 합니다. JMP 다변량에는 멋진 다변량 화면이 있습니다.

Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성좋은 아침이에요 gzmorgan0 ,
이전에 "자동으로 확장하고 자동으로 이상값을 찾아서 제거하는 방법에는 여러 가지가 있습니다"라고 말씀하셨습니다.
그 내용을 나와 공유해도 괜찮을지 궁금합니다.저는 많은 코딩 작업을 해왔고 약간의 수정을 거쳐 거의 마지막 단계에 이르렀습니다.
잉
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성첫째, 내 이름은 데이비드입니다. 만나서 반가워요..
맞습니다. 저는 균일한 스케일을 원하며 최악의 시나리오에 따라 -x 축을 조정합니다.이상치를 제거하라는 귀하의 권고를 듣고 싶습니다. 그게 내 데이터 세트를 죽이고 있어요.. 우리가 전기적으로 테스트하는 부품은 PASS, BARELY PASS 또는 치명적인 실패를 나타냅니다. 심각하게 고장난 부품은 제거해야 합니다..
테스트를 위해 수정된 스크립트를 기본 스크립트에 연결하겠습니다. 다시 한 번 매우 감사드립니다. 또한 include()에 대해서도 감사의 말씀을 전하고 싶습니다.. 나는 SQL 데이터 풀 문자열에 불과한 엄청난 양의 스크립트를 가지고 있었습니다. 우리 데이터베이스에는 테스트 유형에 따라 데이터를 가져와야 하는 8개의 테이블이 있습니다.
다시 감사합니다...
참고로 여기에 예가 있습니다. 이 중 9개는 수많은 코드 라인을 차지하며 하나의 include()로 해결되었습니다.
testdata_HAY_DC_QQ_Data = Expr(
"
SELECT
t1.testdate,
t1.wafer_id,
t1.wafer_number,
t1.lot_number,
t2.rownum,
t2.colnum,
t2.die_id,
t2.part_name,
t2.testname,
t2.channel,
t7.header_id,
t7.idx,
t7.run_id,
t7.set_id,
t7.Supply_Name,
t7.Voltage,
t7.Current
FROM tst_master t1
LEFT OUTER JOIN tst_dataset_header t2
ON ( t2.run_id = t1.run_id )
LEFT OUTER JOIN tst_dc_data t7
ON ( t7.header_id = t2.header_id )
WHERE (t1.wafer_number LIKE '"||SelectedLot||"')
AND (t2.testname LIKE '"||SelectedTest||"')
"
);
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성
잉게인스턴,
나는 당신이 모든 배포판에 대해 동일한 규모를 원한다는 인상을 받았습니다.JMP 분포는 일반적으로 히스토그램을 현재 데이터에 맞게 조정하는 데 탁월한 성능을 발휘합니다. 그러나 데이터의 하위 집합을 그리는 경우 개별 히스토그램의 척도가 달라집니다. 데이터 범위를 알고 있는 경우 Lo, Hi 및 inc에 값을 할당합니다. 스크립트가 프로세스 변경 또는 ??로 인해 범위가 변경될 수 있는 데이터를 처리하도록 하려는 경우 그러면 Lo, Hi 및 inc를 계산하는 것이 스크립트의 작업이 되어야 합니다.
이전 스크립트에서는 최소값과 최대값을 사용했습니다. 제외되지 않은 데이터.
Lo = Floor( Col 최소값 ( :test_2 * If( Excluded(),Empty(), 1 ) ) );
Hi = 천장( Col 최대값( :test_2 * If( Excluded(),Empty(), 1 ) ) );
아래에서는 끝에 약간의 공간을 제공하기 위해 또 다른 수정 사항을 적용했습니다. 제외되지 않은 데이터의 표준 편차를 계산하고 표준 편차의 절반을 추가했습니다.제가 분포를 비교하는 대체 그래프를 제안한 이유 중 하나는 JMP가 포함된 모든 데이터로 확장되고 채널 및 테스트 상태의 효과를 볼 수 있다는 것입니다.
dt = Current Data Table();
jjrn3 = New Window( "Distribution [test_2]", <<JOURNAL></JOURNAL>
자동으로 크기를 조정하고 이상값을 자동으로 찾아서 제거하는 방법에는 여러 가지가 있습니다. 한 업계에서 수용하는 방법이 다른 업계에서는 수용되지 않을 수 있기 때문에 강력하게 권장하기를 꺼려합니다. 일반적인 데이터 방법은 일반적으로 덩어리진 데이터(클러스터형 데이터 또는 공간 데이터)나 부풀려진 결함 데이터 또는 신뢰성 데이터에는 적용되지 않습니다.내 의도는 귀하에게 효과가 있을 수도 있고 없을 수도 있는 대안을 지적하는 것입니다.
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성
네, 당신의 실력은 정말 뛰어나서 언제든지 당신에게서 JSL 수업을 듣고 싶습니다..
빠른 질문이지만.. 나는 그것을 gd_inc.jsl로 실행했고 이것이 내가 얻은 것입니다. 척도가 거의 완벽하다는 것을 알 수 있지만 15개 데이터 세트에는 이러한 두 가지 차이점이 있습니다. 앞으로는 이런 일이 없을 것이라는 말은 아니지만.. 당신이 인용한 두 번째 스크립트로 스크립트를 수정하라고 하면 혼란스러워집니다. 나는 10.5와 42.0이 어디에서 파생되었는지 알아보려고 노력하고 있으며 그것이 log() 함수와 관련이 있다고 생각하지만 확실하지 않습니다.

Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성gd_inc()는 이전에 이 블로그 경로에 전송되었던 사용자 함수입니다.다시 붙였습니다.사용하기 전에 스크립트에 코드를 추가하거나 스크립트(나는 gd_inc.jsl이라고 부름)를 유용한 함수의 공통 디렉토리, 개인 라이브러리 및 좋은 축 증분을 계산하려는 모든 스크립트에 저장하십시오. 진술을 추가하십시오.
Include( "mydirectory/gd_inc.jsl" );
회사 보고서를 지원하는 사람들의 경우 usr_functions.jsl과 같은 이름의 하나의 큰 스크립트를 만드는 경우가 많습니다.그런 다음 수많은 include() 문 대신 단 하나의 include("mydirectory/usr_functions.jsl")를 사용합니다.
여기에 다시 함수가 있습니다. 이전 포스팅을 보시면 이 기능을 사용하는 방법에 대한 예시가 있습니다.
gd_inc = Function({xlo, xhi, ntic}, {sp,tt, yrnd, ginc, ndec,lc, ll},
sp = (xhi - xlo)/ntic;
tt = log10(sp);
yrnd = If(
tt > 0, 1 - Floor( tt ),
Abs( Floor( tt ) - 1 )
);
ginc =round(sp,yrnd);
ndec = length(word(2,char(ginc),"."));
lc = length(word(1,char(xhi),"."));
if(ndec>0, lc=lc+ndec+1);
if(xlo <0, lc++); //add 1 character for the negative sign
ll=[1,1,1];
ll[1] = ginc; //increment
ll[2] = ndec; //# decimals
ll[3] = lc; //character length
ll
); // end gd_inc
/* test cases
show(gd_inc(1,11,10), gd_inc(.001, .005, 10), gd_inc(10000,20200, 10) )
*/그런데 저는 수년 동안 JMP와 JSL을 사용하고 가르쳐 왔습니다. 그래서 내 지식은 그렇게 놀라운 것이 아니라 단지 공유하려고 노력하는 것뿐입니다.
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성당신은 이 JSL 관련 내용이 놀랍습니다.. 그런 것을 찾을 수 있을지도 모르겠습니다. 지금 배포판을 테스트 중입니다.. 다른 그래프에 대해서도 충분히 감사할 수가 없습니다.. 나는 이것을 수행하는 방법에 대해서도 질문을 받을 것이라고 확신합니다. 참고로 저는 JMP 12.1.0을 사용하고 있지만 저희 회사는 이 사이트에서 찾은 Semiconductor Toolkit 추가 기능 때문에 빨리 JMP 14로 전환하고 있습니다.
gd_inc 문과 관련하여 오류가 발생합니다.
이름이 확인되지 않음: 'gd_inc' 액세스 또는 평가 시 gd_inc, gd_inc( Lo, Hi, 10 ) /*###*/
다음 스크립트에서는 /*###*/로 표시된 오류가 있습니다.
dt = Current Data Table();
jjrn3 = New Window( "Distribution [test_2]", <<JOURNAL></JOURNAL>
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성잉게인스턴,
2개의 스크립트를 첨부했습니다.
- ModifiedDistribution[test_2].jsl 및
- 기타DistributionPlots.jsl
중요한 점은 모든 플랫폼 보고서가 동일한 구조나 동일한 메시지를 갖고 있는 것은 아니며 사용 가능한 내용은 JMP 버전에 따라 다르다는 것입니다.트리 구조 표시 및 XML 가져오기는 보고서 구조를 검색하는 데 도움이 되는 메시지이며 스크립팅 색인은 표시 상자에 대한 메시지를 나열합니다.나는 XPath()를 사용하여 BoxPlotSeg 및 HistSeg와 같이 찾기 어려운 개체나 여러 세그먼트에 대한 "핸들"을 얻는 것을 좋아합니다.그러나 객체를 참조하는 다른 방법이 있습니다. 히스토그램의 Y 변수 스케일박스에 대한 핸들을 얻으려면 다음을 사용하십시오.
_xx = gb<< Xpath("//ScaleBox[@charID='1']");
_xx << 메시지;
또는
보고서(gb)[ScaleBox(1)] << 메시지;
다른 스크립트는 분포를 비교하는 데 좋은 대체 플롯을 보여줍니다.
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성대본 감사합니다... 처음 올리신 내용에 대해 질문이 있습니다. 그냥 메인 스크립트에 넣나요, 아니면 별도의 새 스크립트에 넣나요?
나는 당신이 플롯하고 상사에게 제안한 그래프를 좋아했기 때문에 그가 요청하는 많은 보고서에 그래프를 구현하는 것에 대한 그의 의견을 기다리고 있습니다.
또한 -x를 -y로 플롯하는 방법과 함께 제공한 스크립트를 사용하고 Graph Builder를 Distribution으로 대체했는데 거의 완벽하게 작동했습니다. 트리 구조에 관해 질문이 있습니다. 이 줄로 되돌려 텍스트 상자(1)를 찾을 수 있었지만 배포 수정으로 인해 이 스크립트를 실행할 때 오류가 발생했습니다. 제거해야 할 부분을 찾을 수 없는 것 같습니다.. 데이터 테이블과 분포 함수가 포함된 수정된 스크립트를 첨부합니다.
( GB << 상단 보고서 )[ 텍스트 상자 ( 1 )] << 삭제 ; //where 문을 삭제합니다.
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성조언/코드 감사합니다.. 이번주에 한번 해볼려구요.. 데이터 가져오기, 테이블 형식 및 그래프 출력을 시연해야 하는 소프트 기한이 있습니다. 당신의 도움으로 제가 성공할 가능성이 크게 높아졌습니다
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성이전 답변에서 언급했듯이 " 고정 척도를 생성하거나 선호하는 알고리즘을 사용하여 현재 데이터에 가장 적합한 척도를 찾을 수 있습니다. " 다음은 스크립트 7_InteractiveDisplays_Alternates.jsl(JSL Companion, 2nd Ed. 도서용)용으로 생성된 함수 gd_inc()입니다.
값의 범위를 알 수 없는 애플리케이션을 코딩할 때 사용하는 기능을 단순화한 것입니다.이 스크립트는 고정 소수 형식이 작동한다고 가정합니다. 보다 일반적인 스크립트는 소수점이 너무 많은지 확인한 다음 과학적 표기법으로 전환하거나 로그 척도 등으로 변경합니다. 사용하기 전에 시험해 보아야 합니다.
인수는 낮음, 높음 및 증분 수입니다. inc 값의 벡터, 형식의 소수점 수 및 최대 길이를 반환합니다. 전체 스크립트에서는 x축에 사용되며 길이에 따라 방향이 변경됩니다. 또는 고정 소수 형식 이외의 다른 형식을 사용해야 하는 경우 길이를 사용하여 트리거할 수도 있습니다.
gd_inc = Function({xlo, xhi, ntic}, {sp,tt, yrnd, ginc, ndec,lc, ll},
sp = (xhi - xlo)/ntic;
tt = log10(sp);
yrnd = If(
tt > 0, 1 - Floor( tt ),
Abs( Floor( tt ) - 1 )
);
ginc =round(sp,yrnd);
ndec = length(word(2,char(ginc),"."));
lc = length(word(1,char(xhi),"."));
if(ndec>0, lc=lc+ndec+1);
if(xlo <0, lc++); //add 1 character for the negative sign
ll=[1,1,1];
ll[1] = ginc; //increment
ll[2] = ndec; //# decimals
ll[3] = lc; //character length
ll
); // end gd_inc
/* test cases
show(gd_inc(1,11,10), gd_inc(.001, .005, 10), gd_inc(10000,20200, 10) )
*/결과가 나오면 스크립트를 수정하세요.
_yscl = gd_inc(Lo,Hi, 10);
_xx[1] << Axis Setings( {Min( Lo ), Max( Hi ), Inc( _yscl[1] ),
Minor Ticks( 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} ),
Format("Fixed Dec",12,_yscl[2])
});
JMP는 자동 스케일링 기능을 훌륭하게 수행합니다. 그래프 빌더에 스케일링이 너무 넓은 이유는 매끄러운 곡선뿐만 아니라 점을 표시할 수 있도록 스케일링하기 때문입니다. 한 가지 옵션은 스플라인 곡선 값을 가져와서 플롯하는 것입니다.
당신이 선택하는 경우 ~ 아니다 그렇게 하려면 곡선의 최대값과 최소값을 찾아야 하며 Y_i에 대한 모든 그래프가 동일한 척도를 갖기를 원하는지, 아니면 각 Y_i와 테스트가 동일한 척도를 가져야 하는지 또는 각 그래프가 자체 척도를 가져야 하는지 결정해야 합니다.JMP Spline Smooth() 함수는 스플라인 값을 반환하며 가능한 각 곡선의 최대값과 최소값을 찾은 다음 전체에 대한 최대값과 최소값을 얻을 수 있습니다. 이는 Lo 및 Hi를 제공하며 일반적으로 증분 수에 10을 사용합니다.
그런 다음 gd_inc() 함수를 사용하여 수정하세요.낮은 값과 높은 값을 알고 있는 경우 각 Y에 대한 테이블이나 상수를 만듭니다.
사용자 정의 스케일링은 여러 곡선 및 스플라인과 같은 사용자 정의 곡선으로 인해 지저분해질 수 있습니다.시간이 있으면 더미 데이터에 대한 업데이트된 스크립트를 첨부하겠습니다.
그런데, 귀하의 더미 데이터가 얼마나 현실적인지 잘 모르겠습니다. PowerPoint에서 여러 그래프를 비교하면 혼란스러울 수 있습니다.GraphBuilder는 그래프를 비교하는 데 좋습니다. 수많은 그래프 대신에 일부 비교(반드시 아래의 비교는 아님)가 유용할 수 있습니다. 아래는 테스트에 대한 Y_3 대 채널 및 X의 다른 값입니다.

Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성테이블을 로드하지 않았습니다..
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성방금 귀하의 솔루션을 시도했습니다. 나는 보통 그래프가 어떻게 보일지 확인하기 위해 Save Script to Window를 수행합니다.
제가 정확히 무엇을 달성하려고 하는지에 대한 아이디어를 제공하기 위해 수정된 더미 데이터를 첨부했습니다.
15개 채널과 이 경우 출력이 서로 다른 2개의 테스트 상태를 사용하면 모든 솔루션에 적합한 단일 크기를 볼 수 없습니다.
당신의 생각을 알려주세요.
이 특정 테스트에는 3개의 출력이 있습니다. 그건 별도로 평가해야 해요.
데이비드
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성매우 감사합니다.. 오늘 저녁에 해봐야겠네요..
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성고정 척도를 생성하거나 선호하는 알고리즘을 사용하여 현재 데이터에 가장 적합한 척도를 찾을 수 있습니다.
이전에 제공된 스크립트의 수정된 버전이 아래에 첨부되어 있습니다. 새로운 코드는 아래와 같습니다.더미 데이터의 경우 가장 좋은 스케일링은 아마도 -8에서 8 사이일 것입니다. 그러나 저는 여러 그래프가 잘릴 수 있다는 것을 보여주기 위해 -7을 선택했습니다.
_xx = gb<< Xpath("//ScaleBox[@charID='Y']");
_xx[1] << Axis Setings({Min( -7 ), Max( 8 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )});변경 사항을 스크립팅하는 방법을 알아내는 방법에는 여러 가지가 있습니다. 가장 쉬운 방법은 하나의 그래프를 스크립팅한 다음 GUI를 사용하여
축, 제목 또는 범례를 변경합니다. 그런 다음 (그래프 빌더 개요에 있는) 빨간색 역삼각형에서 스크립트 저장 > 스크립트 창으로 . 이 방법을 사용하면 Dispatch 인수가 표시됩니다.아래를 참조하세요.
Graph Builder(
Size( 1242, 709 ),
Show Control Panel( 0 ),
Variables( X( :X ), Y( :Y ), Group X( :Wafer ID ), Overlay( :RowCol ) ),
Elements( Smoother( X, Y, Legend( 19 ) ) ),
Where( dt:Channel == chnl & dt:Test State == tst ),
SendToReport(
Dispatch(
{},
"Graph Builder",
OutlineBox,
{Set Title( "Results for Channel=1 and Test State=1" )}
),
Dispatch(
{},
"Y",
ScaleBox,
{Min( -7 ), Max( 8 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
)
)
);제목이 사용자 정의되었으므로 OutlineBox에 대한 Dispatch를 제거한 다음 for 루프에서 이 코드를 사용하면 각 그래프에 스크립트에 지정된 것과 동일한 크기 조정이 적용됩니다.
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성그래프와 함께 For() 루프와 관련하여 한 가지 더 질문해도 될까요?
최적 크기를 자동으로 조정하는 방법이 있나요?
예시에서 Min = 5 및 Max = 30의 스케일을 얻을 수 있다면 부품이 주파수 전체에서 어떻게 작동하는지 정확하게 더 잘 알 수 있습니다.
물론 미리 이상값을 제거해야 하겠지만..
감사해요
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성이 문제에 대한 귀하의 도움에 대해 충분히 감사드립니다 .. 여기 직장의 누구도 당신이 한 일을 어떻게 해야 하는지 원격으로 말해 줄 수 없습니다.
이를 통해 이 작업을 수행하는 데 걸리는 시간을 80% 이상 단축했습니다.
귀하의 솔루션과 데이터베이스 파일에 액세스하기 위해 제가 작성하고 있는 SQL 스크립트는 우리를 고객과 함께 환상적인 위치에 놓을 것입니다.
다시 감사합니다..
디
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성응답해 주셔서 감사합니다. 나는 당신의 예를 사용하여 그것을 알아낼 수 있는지 알아볼 것입니다.
"select where" 문을 사용해 보았는데 꽤 잘 작동했습니다.작성해야 할 코드의 양을 줄이려고 노력했을 뿐입니다. 위에 나열된 모든 매개변수를 사용하여 5가지 다른 테스트를 수행했습니다.
내가 이것을 시도하면 다시보고하겠습니다.
다시 한번 감사드립니다..
Re: JSL - 다양한 변수가 있는 열을 반복하는 -xy 플롯 생성안녕,
데이터 필터 대신 where 문을 사용하도록 그래프 생성 방법을 수정하는 것이 좋습니다.데이터 필터는 대화형 시각적 분석에 적합하지만 뷰가 보이지 않으므로 where 문을 사용하는 것이 좋습니다.where 문을 사용하면 where 텍스트 상자가 표시됩니다. 삭제될 수 있습니다. By 인수인 By(:Channel, :Test State)를 사용할 수도 있습니다. 그런 다음 스크립트는 각 GB에 액세스하고 프레젠테이션을 저장해야 합니다.
저는 Save Presentation의 팬이 아니며 무료 외부 명령줄 프로그램인 P3ICLI를 사용하여 JMP 출력에서 PPTX 슬라이드를 만드는 것을 좋아합니다. 보다 P3ICLI를 사용하여 PPTX를 생성하는 JSL 예제 . 다른 코드와 마찬가지로 지저분해 보이지만 사용자 정의가 가능하고 그래프와 제목 크기를 제어할 수 있습니다.
그러나 프리젠테이션 저장을 사용하여 여러 플롯을 저장하는 경우 여러 레이아웃 디스플레이를 그림으로 저널링하고 프리젠테이션 저장을 사용하는 몇 가지 요령을 작성했지만 크기를 조정해야 합니다.
어쨌든 시나리오를 에뮬레이션하기 위한 더미 데이터 테이블과 두 개의 스크립트가 첨부되어 있으며 각각은 페이지당 하나의 그림을 저장합니다.
도움이 되었기를 바랍니다.