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 軸上の複数の基準線明位相線と暗位相線が予期した場所に表示されないという 2 番目の問題は、軸変数と線の移動先を定義するために使用される変数の間の不一致が原因です。
グラフでは 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 軸上の複数の基準線やあ@バイロン_JMP
ご提案ありがとうございます。
あなたが説明したセットアップを使用してみましたが、ある程度は機能しました。 同じプロセスに従うために、データ テーブル (NewPhase) に新しい列を作成し、欠落していない行がイベント行になるようにしました。
NewPhase 列の出力は、行数が最も多い動物番号のみに基づいているため、動物ごとに 1 つのイベント行ではなく 1 セットのイベント行のみが取得されます。
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 軸上の複数の基準線参照線をいつ追加するかを定義するために列を使用しました。 範囲を追加するのも同じくらい簡単だと思います。
役に立つかもしれないいくつかのメモを次に示します。管理図のイベント行とコメント