다중 Y 축 그래프
이것은 모든 y 축 변수를 스케일링하고 오버레이 한 다음 변수의 단위 및 범위로 y 축 스케일을 제공하는 특수 그래프입니다. 이것은 서로 다른 범위에있는 3 개 또는 4 개의 변수를 오버레이 할 때 유용합니다. 위의 그림에서 유속은 0-40 범위이고 전력은 200-1000 및 100-500 범위입니다. 이 유형의 그래프는 여러 센서가 동시에 데이터를 기록하는 과학 및 엔지니어링 응용 프로그램에서 종종 사용되지만 각 센서의 범위는 상당히 다릅니다. 예를 들어, 발효 예에서, 포도당은 1-5 g / dl이고, pH는 6.8-7.8이며, 락트산은 10-50 mmol이며, 세포 수 또는 탁도는 수십배 더 크다. 시간에 따른 모든 변수 간의 관계를 그래프로 표시하는 간단한 방법은 프로세스의 동역학을 이해하거나 비정상적인 패턴을 감지하는 데 매우 유용합니다.
기본 이름은 여기 (1); dt = 현재 데이터 테이블 (); // 이것은 대화 상자 일 수도 있지만 이런 식으로 추가 기능을 만들도록 설정되었습니다. ///////////////////////////////////////////////////////// ///////////// Expressions-스크립트를 통해 흩어지지 않고이 모든 것을 여기로 옮겼습니다. obj = Expr (// gb gb = dt2 인 그래프 빌더 플롯 << Graph Builder (Size (640, 230), Show Title (0), //// opt Show Control Panel (0), Legend Position ( "Inside Left"), 변수 (X (Column (dt2, 1)), Y (: Data) , Overlay (: Column Names)), // : 행은 대화 상자에서 x를 기준으로 또는 x를 기준으로 동적이어야합니다. 요소 (Line (X, Y, Legend (7))), SendToReport (Dispatch ({}, "400", LegendBox, {Set Title ( "")}))), SendToReport (Dispatch ({}, "Graph Builder") , OutlineBox, {Set Title ( "Scaled Response Graph")}), SendToReport (Dispatch ({}, "Data", ScaleBox, {Label Row (Show Major Labels (0))})))), SendToReport (Dispatch ({ }, "Y title", TextEditBox, {Set Text ( "")})))); objwin = Expr (// 모든 것이 새 창으로 끝나는 창 ( "여러 Y의 스케일 된 응답 그래프")); objout = Expr (// 개요 상자 개요 상자 ( "Y 축 레이블")); objhlb1 = Expr (H리스트 박스 ( "1")); // 이것은 축 도표를가집니다 objhlb2 = Expr (H List Box ( "1")); // 이것은 obj 그래프를 가지고 있습니다. objvlb = Expr (V List Box ( "1")); // 이것과 dt2stackcols = Expr (columns ()); // 스택 할 열 이름 dt2stack = Expr (// 인수가있는 스택 표현식. 참고 : 열 인수는 첫 번째 여야합니다. stack (소스 레이블 열 ( "열 이름"), 누적 데이터 열 ( "Data"))); ///////////////////////////////////////////////////////// /////////////////// 열 이름을 가져 오는 대화 상자 cd = 열 대화 상자 (ylist = ColList ( "Y", Min Col (2), Max Col (8), Data Type ( "Numeric"), Modeling Type ({ "Continuous"})), xlist = ColList ( "X", Max Col (1), Modeling Type ({ "Continuous", "Multiple Response"}))); 평가 (Eval Expr (cd [1])); // eval expr은 cd [1]의 내용을 반환하며 eval은 Eval (Eval Expr (cd [2]); // 별도로 cd [1]을 실행 한 다음 evalexpr) cd [1]을 실행하면 ylist 및 xlist 변수를 얻을 수 있습니다. ////////////////////// /////////////////////////////////////////////// 표준화 된 데이터 테이블, and "Axis Boxes" "dt1 = New Table ("여러 y 축 테이블 "); // 이것은 표준화 된 값이가는 테이블입니다. If (N Items (xlist) == 1, // xlist에 대해 열을 선택하면 크기가 조정되지 않습니다. Insert Into (ylist, xlist, 1), // 날 미치게하지만 ylist의 첫 번째 값은 "X"입니다. dt1 << New Column ( " Row ", formula (Row ()))); For (If (N Items (xlist) == 1, // yep,"for "루프 내부의"if "인수 i = 2; // if" x "가 지정되면 ycol = As Column (dt, ylist [1]) << 값을 가져 오십시오. dt1 << New Column (Munger (ylist [1], 1,": ", "", set values (ycol)); // 이것은 못 생겼다, i = 1), i <= N Items (ylist), i ++, // For 루프의 설정 종료 ycol = As Column (dt, ylist [i]) << 값 가져 오기; yycol = ((yco l-최소 (ycol)) / (최대 (ycol)-최소 (ycol))); dt1 << 새 열 (Munger (ylist [i], 1, ":", ""), 설정 값 (yycol)); // 이것은 못 생기고 미안합니다. amin = Min (ycol); //이 스크립트의 두 번째 부분은 y 축 상자를 만들기위한 값을 가져 오는 것입니다. amax = Max (ycol); // 스케일링되지 않은 각 열의 최소값과 최대 값이 이름과 함께 ymin = amin-((amax-amin) * .1); // y 축 상자 축 범위가 최소 및 최대보다 10 % 높고 낮습니다. ymax = amax + ((amax-amin) * .1); // 그것은 gb obj1 = Graph Box (Framesize (0, 230), yName (Char (ylist [i])), Y Scale (ymin, ymax)); // 실제 축 상자가 아니라 squished 그래프 상자입니다. 축 박스는 자유로웠다 Insert Into (objhlb1, Name Expr (obj1)); // 여기에는 expr ()라는 이름이 많이 삽입되어 있습니다. 내부에서 외부로 표현 표현의 일부. ); ///////////////////////////////////////////////////////// /////////////// 그래프에 대한 표준화 된 데이터 스택 For (If (N Items (xlist) == 1, i = 2, i = 1), i <= N Items (ylist), i ++ , Insert Into (dt2stackcols, ylist [i]);); 삽입 대상 (dt2stack, Name Expr (dt2stackcols,) 1); dt2 = dt1 << 평가 식 Expr (dt2stack); eval (대체 (expr (dt2 = dt1 << ping), expr (ping), evalexpr (dt2stack))); //이 까다 롭다! dt2 << 세트 이름 ( "여러 y 축 스택"); ///////////////////////////////////////////////////////// /////////////// 표시되는 최종 창에 모든 부품을 조립-순서가 중요합니다. Insert Into (objout, Name Expr (objhlb1); 삽입 대상 (objvlb, Name Expr (objout)); 삽입 대상 (objhlb2, Name Expr (objvlb)); 에 삽입 (objhlb2, Name Expr (obj)); 삽입 대상 (objwin, Name Expr (objhlb2)); 평가 (Eval Expr (objwin)); // 모든 식을 평가 한 후 모든 조립 된 부품을 평가합니다 gb << size (600, 285); // 그래프를 포맷하려면 gb로 메시지를 보냅니다.
스크립트 작동 방식에 대한 자세한 내용은 여기를 참조하십시오.
https://community.jmp.com/t5/Byron-Wingerd-s-Blog/Multiple-Y-Axis-Graphs/ba-p/52000