やあみんな、
質問があります。 以下のようなテーブルがあるとします。 X 軸に TIME をプロットし、X 軸を TYPE でグループ化するとします。 データがない場合でも、両方のグループの X 軸に 5 つの値すべてが表示されます。 グラフ空間を不必要に使用します。 1 つの方法は、X 軸 (TIME) を列 TYPE でネストすることですが、これは両方の列が公称型である場合にのみ機能します。 両方の列が異なるタイプである場合、それらは方法ですか?
ありがとう
| 時間 | タイプ |
| 2018 年 10 月 1 日 | 悪い |
| 2018 年 10 月 2 日 | 悪い |
| 2018 年 10 月 3 日 | 悪い |
| 2019 年 1 月 1 日 | 良い |
| 2019 年 1 月 1 日 | 良い |
JMP プラットフォームは、JMP 開発者によってスクリプト化されたとおりに動作します。 ウィッシュリストを変更することができます。将来変更される可能性があります。
データテーブルを再構築しない限り、GraphBuilder に希望どおりの動作をさせる方法がわかりません。 GraphBuilder は異なるデータ型をネストせず、X グループ化は同じ X スケールを使用します。したがって、これを行う唯一の方法は、各グループの (タイプ) 時間 (X 変数) を独自の列にして、それらを並べてドラッグすることです。以下は、テーブル レイアウトのキャプチャと再構成された分割テーブルです。 Split :Time by :Type :row でグループ化し、すべての列を保持します。
Your specified table layout - Row # column addedYour specified table layout - Row # column added指定したテーブル レイアウト - 行 # 列が追加されました
Date Split by Type, Grouped by row #Date Split by Type, Grouped by row #日付をタイプごとに分割、行番号ごとにグループ化
以下は、分割テーブル time table を使用して作成された並列 GraphBuilder です。

これがスクリプトです。
Graph Builder(
Variables( X( :BAD ), X( :GOOD ), Y( :y ) ),
Elements(
Position( 1, 1 ),
Points( X, Y, Legend( 19 ) ),
Smoother( X, Y, Legend( 20 ) )
),
Elements(
Position( 2, 1 ),
Points( X, Y, Legend( 21 ) ),
Smoother( X, Y, Legend( 22 ) )
)
)
もちろん、再構築する必要はありません。変換によって新しい変数を作成し、タイプごとに新しい変数を作成し、変換された変数を X 軸に並べてドラッグします。

以下は保存したスクリプトです。 多数のグループがある場合、テーブルを分割するのが最も簡単です。
Graph Builder(
Size( 856, 534 ),
Show Control Panel( 0 ),
Variables(
X( Transform Column( "Bad[TIME]", Formula( If( :TYPE == "BAD", :TIME ) ) ) ),
X(
Transform Column(
"Good[TIME]",
Formula( If( :TYPE == "GOOD", :TIME ) )
)
),
Y( :y )
),
Elements(
Position( 1, 1 ),
Points( X, Y, Legend( 17 ) ),
Smoother( X, Y, Legend( 18 ) )
),
Elements(
Position( 2, 1 ),
Points( X, Y, Legend( 19 ) ),
Smoother( X, Y, Legend( 20 ) )
),
SendToReport(
Dispatch( {}, "Bad[TIME]", ScaleBox, {Format( "m/d/y", 10 )} ),
Dispatch(
{},
"Good[TIME]",
ScaleBox,
{Format( "m/d/y", 10 ), Min( 3629059200 ), Max( 3629232000 ),
Interval( "Numeric" ), Inc( 17.28 ), Minor Ticks( 1 )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model( 17, Level Name( 0, "y Bad", Item ID( "y", 1 ) ) ),
Legend Model( 19, Level Name( 0, "y Good", Item ID( "y", 1 ) ) )}
),
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {17, [0], 18, [-1], 19, [1], 20, [-1]} ),
Position( {0, -1, 1, -1} )}
)
)
)あなたは私の返答を理解できなかったに違いありません:
- 時間をキャラクターに変換し、
- 変換された列をネスト内で使用します。
私の投稿に埋め込まれたグラフでは、ランダムな Y 変数を使用した例が使用されています。
GraphBuilder インターフェースを使用して、「時間」列を右クリックし、「時間」を選択します。式そしてこの式を入力してください形式( :TIME, "m/d/y" ) 。これは列セレクターに次のように表示されます。変換[時間] 。 これを X にドラッグし、列 Type をドラッグして、Time が Type 内にネストされるようにします。