x축의 여러 참조선안녕,
내가 작업하고 있는 프로젝트의 경우 약 24시간의 기간을 표시하는 x축에 시간이 있는 그래프를 만들었습니다. 밤 시간과 낮 시간을 시각적으로 설명하기 위해 아래 스크립트와 첨부된 이미지와 같이 참조선을 추가했습니다.
X축 열의 속성:
SableData << New Column(
"Time since first dose-[hours]",
Numeric, "Continuous",
Format("Best", 12),
Formula((:Date Time - :StartTime) / (60 * 60)),
Set Property("Spec Limits", {LSL(8), USL(20), Show Limits(0)}), Set Selected);
그래프 생성, 참조 라인 추가 및 구성:
Oxygen consumption = SableData << Graph Builder(
Size( 1007, 689 ),
Variables(
X( :Name( "Time since first dose-[hours]" ) ),
Y( :Name("VO2-[ml/min]" )),
Overlay( :Treatment )
),
Elements( Line( X, Y, Legend( 21 ), Error Bars( "Standard Error" ) ) ),
SendToReport(
Dispatch( {}, "Graph Builder", OutlineBox, {Set Title( "Oxygen consumption" )} ),
Dispatch(
{},
"Time since first dose-[hours]",
ScaleBox,
{Min( 168 ), Max( 288), Inc( 2 ), Minor Ticks( 12 )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
21,
Properties( 0, {Line Color( 0 )}, Item ID( "A", 1 ) ),
Properties(
1,
{Line Color( 53 )},
Item ID( "B", 1 )
),
Properties(
2,
{Line Color( 37 )},
Item ID( "C", 1 )
),
Properties( 3, {Line Color( 0 )}, Item ID( "A", 2 ) ),
Properties(
4,
{Line Color( 53 )},
Item ID( "B", 2 )
),
Properties(
5,
{Line Color( 37 )},
Item ID( "C", 2 )
)
)}
),
Dispatch( {}, "Graph Builder", FrameBox, {Marker Size( 0 )} ),
Dispatch( {}, "400", LegendBox, {Set Title( "" )} )
)
);
Eval(
Substitute(
Expr(
Report( Oxygen consumption )[AxisBox( 1 )] << Add Ref Line( {__LSL__, __USL__}, "Solid", "Black", "", 1, 0.25 ) //try show limits(1) in spec limits
),
Expr( __LSL__ ), (SableData:Name( "Time since first dose-[hours]" ) << get property( "spec limits" ))["LSL"],
Expr( __USL__ ), (SableData:Name( "Time since first dose-[hours]" ) << get property( "spec limits" ))["USL"]
));
하지만 지금은 2주 동안의 데이터가 있고 여전히 밤낮으로 시각적으로 설명하고 싶습니다. 물론 수동으로 추가하고 스크립트를 복사할 수 있지만 강력한 방식으로 이 작업을 수행하고 싶습니다.
어떤 식으로든 이러한 추가 속성을 "첫 번째 투여 이후 시간-[시간]" 열 또는 모든 제한을 포함하는 별도의 데이터 테이블을 만들고 한 번에 데이터 테이블로 가져올 수 있습니까?
미리 감사드립니다.
Br 줄리

대량 맞춤화품질 및 프로세스 엔지니어링Re: x축에 여러 참조선이 있습니다.나는 실제로 그것에 대해 도움을 받았고 다음과 같이 밝혀졌습니다.
DarkLight = SableData << select where(:NewPhase == "new" ) << subset(
Output Table("DarkLight"),
columns(
:Date,
:Phase,
:Name("Time since first dose-[hours]"),
:NewPhase)
);
DarkLight:Date << data type( Character ) << Set Modeling Type( Nominal );
DarkLight << new column("Phase per day", Character, "Nominal", Formula( :Date || "-" || :Phase ) );
DarkLight << new column("High", Numeric, "Continuous", Formula(
Lag( :Name( "Time since first dose-[hours]" ), -1 ))
);
DarkLight:High << delete formula;
DarkLight << new column("Color", Character, "Nominal", set each value("Grey"));
column(DarkLight, "Time since first dose-[hours]") << Set Name("Low");
DarkLight << select where(:Phase == "Light phase") << delete rows;
RQ = SableData << Graph Builder(
Size( 938, 712 ),
Variables(
X( :Name( "Time since first dose-[hours]" ) ),
Y( :RQ ),
Overlay( :Treatment )
),
Elements( Points( X, Y, Legend( 4 ) ) )
);
x axis = Report( RQ )[AxisBox(1)];
For Each Row( DarkLight,
// draw colored regon
Eval( Eval Expr( x axis << Add Ref Line( { Expr( :Low ), Expr( :High ) }, "Solid", Expr( :Color ), , , 0.25 ) ) );
// draw border lines
Eval( Eval Expr( x axis << Add Ref Line( Expr( :Low ), "Solid", "Black" ) ) );
Eval( Eval Expr( x axis << Add Ref Line( Expr( :High ), "Solid", "Black" ) ) );
);
Re: x축에 여러 참조선이 있습니다.그것은 매우 재미있는 데이터 세트입니다. 게시하고 질문해 주셔서 감사합니다.
시간이 무한하다면 어두운 단계가 약간 회색으로 음영 처리된 간격 선이면 더 좋아 보일 것입니다. 다른 사람이 그것을 집어 들고 실행할 수 있습니까?
Re: x축에 여러 참조선이 있습니다.와우 설명 정말 감사합니다. 그것은 좋은 의미가 있었고 아름답게 작동합니다.
Re: x축에 여러 참조선이 있습니다.밝고 어두운 위상 선이 예상한 위치에 나타나지 않는 두 번째 문제는 선이 가야 하는 위치를 정의하는 데 사용되는 변수와 축 변수 사이의 불일치 때문입니다.
그래프에서 x축은 기간이고 사용자 지정 스크립트에서 선은 행 번호를 기반으로 하므로 그래프 빌더는 행 번호를 사용하고 시간 기간에 플롯합니다. 이는 작동하지 않습니다.
데이터 테이블에 두 개의 열을 추가했는데 원래 열 중 일부와 유사하지만 약간의 조정 및 형식 차이가 있습니다.
//if you have the data table open, make it the active table and run this
dt=current data table();
dt<<NEW column=""></NEW>
다음 단계는 그래프에서 사용자 지정 스크립트를 편집하는 것입니다.
//This script goes into the Custom Script in the graph builder plot
For Each Row( If( Is Missing( :NewPhase ) == 0, V Line( :Time2 ) ) );
For Each Row(
If( Is Missing( :NewPhase ) == 0,
Text( {:Time2, 5 + :step2}, " "||:Phase2 )
)
);
//The, " "||:phase2, inserts a space before the label so that it isn't touching the phase line.
결과는 이와 같은 고정 그래프입니다.

모든 변경 사항과 함께 이제 x축은 일:시:분 형식이 되고 모든 밝은 위상 선과 어두운 위상 선이 올바른 위치에 표시됩니다. 위상 레이블은 축약되어 겹치지 않고 지저분한 텍스트를 뒤죽박죽으로 만듭니다.
그래프 스크립트
Graph Builder(
Size( 1455, 290 ),
Show Control Panel( 0 ),
Variables( X( :Time2 ), Y( :Name( "EE-[kcal/h]" ) ), Overlay( :Treatment ) ),
Elements( Line( X, Y, Legend( 5 ) ) ),
SendToReport(
Dispatch(
{},
"Time2",
ScaleBox,
{Min( -586333.5 ), Max( 2531060.48337292 ), Interval( "Day" ), Inc( 1 ),
Minor Ticks( 6 ), Label Row( Label Orientation( "Perpendicular" ) )}
),
Dispatch(
{},
"EE-[kcal/h]",
ScaleBox,
{Format( "Best", 12 ), Min( 1.7751677852349 ), Max( 5.7751677852349 ),
Inc( 1 ), Minor Ticks( 0 )}
),
Dispatch(
{},
"Graph Builder",
FrameBox,
{Add Graphics Script(
2,
Description( "Script" ),
For Each Row( If( Is Missing( :NewPhase ) == 0, V Line( :Time2 ) ) );
For Each Row(
If( Is Missing( :NewPhase ) == 0,
Text( {:Time2, 5 + :step2}, " " || :Phase2 )
)
);
), Grid Line Order( 1 ), Reference Line Order( 3 ),
DispatchSeg(
TopSeg( 1 ),
{Set Script(
For Each Row(
If( Is Missing( :NewPhase ) == 0,
V Line( :Time2 )
)
);
For Each Row(
If( Is Missing( :NewPhase ) == 0,
Text( {:Time2, 5 + :step2}, " " || :Phase2 )
)
);
)}
)}
)
)
)Re: x축에 여러 참조선이 있습니다.이상값으로 인해 예상대로 작동하지 않는 것처럼 잘 작동하는 것 같습니다...

Y축 변수의 열 max()가 23을 넘습니다. 따라서 텍스트는 그림의 나머지 부분과 함께 크기가 맞지 않게 표시됩니다.
Re: x축에 여러 참조선이 있습니다.안녕 @Byron_JMP
제안해 주셔서 감사합니다.
나는 당신이 설명하는 설정을 사용해 보았고 어느 정도 확장되었습니다. 동일한 프로세스를 따르기 위해 데이터 테이블(NewPhase)에 누락되지 않은 행이 이벤트 라인으로 나타나야 하는 새 열을 만들었습니다.
NewPhase 열 출력은 행 수가 가장 많은 동물 번호에만 기반하여 각 동물에 대해 하나의 이벤트 라인 세트만 가져오도록 했습니다.
DataPointsAnimal = SableData << Summary(
Group( :Animal No. ),
N( :Phase ),
Freq( "None" ),
Weight( "None" ));
DataPointsAnimalSorted = DataPointsAnimal << Sort( By( :N Rows ), Order( Descending ) );
Close( DataPointsAnimal, No Save );
AnimalVar = DataPointsAnimalSorted:Animal No.[1];
SableData << New column("NewPhase", Formula(If( :Animal No. == AnimalVar,
If( :Phase == Lag( :Phase, 1 ),
.,
"new"
),
.
)));그런 다음 귀하의 입력으로 그래프를 만들었습니다.
Graph Builder(
Size( 924, 695 ),
Variables(
X( :Name( "Time since first dose-[hours]" ) ),
Y( :Name( "EE-[kcal/h]" ) ),
Overlay( :Treatment )
),
Elements( Line( X, Y, Legend( 5 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Add Graphics Script(
2,
Description( "Script" ),
For Each Row( If( Is Missing( :NewPhase ) == 0, V Line( Row() ) ) );
For Each Row(
If( Is Missing( :NewPhase ) == 0,
Text(
Right Justified,
{Row(), Col Maximum( :Name( "EE-[kcal/h]" ) ) * 1.2},
:Phase
)
)
);
), Grid Line Order( 1 ), Reference Line Order( 3 )}
)
)
);그러나 어떤 이유로 그것은 제한된 양의 줄만 포함하고 텍스트를 전혀 포함하지 않습니다.
내가 도대체 뭘 잘못하고있는 겁니까?
Re: x축에 여러 참조선이 있습니다.참조선을 추가할 시기를 정의하기 위해 열을 사용했습니다. 범위를 추가하는 것도 마찬가지로 쉬울 것이라고 생각합니다.
다음은 유용할 수 있는 몇 가지 참고 사항입니다. 컨트롤 차트의 이벤트 라인 및 설명