オーバーレイグラフ<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、
列を積み重ねるときに問題が発生しました。 私が調査するデータは、何百もの列のデータに含まれる場合があります。 多くの場合、その 1 つの列で分布グラフを使用できるように列を積み重ねます。 しかし、データ テーブルが数百万行のデータに入り込み、列を積み重ねるとクラッシュし始めることがあります。 すべての列を積み上げずに、多数の分布グラフをオーバーレイして 1 つのグラフを作成する方法はあるだろうかと考えていました。 L大量の列をグラフにして、それらすべてのグラフを 1 つにオーバーレイしたいですか?
助けていただきありがとうございます!
Re: オーバーレイグラフマシンのハードウェア制約内では、一般に JMP はこの種のことに適しています。 (何らかの理由で) 単一列のデータをインポートすることはできないと思います。
以下のコードを試してみてください。 私のマシンではこれに 8 秒かかりますが、その時間の半分以上は、開始元のテーブルの構築とその中の数式の評価に費やされます。 nr = 1,000,0000 に設定すると、実行時間は約 1 分になります。
NamesDefaultToHere(1);
// Number of columns and rows
nc = 130;
nr = 100000;
// Make a test table, dt1, to work with
dt1 = NewTable("Test", NewColumn("Column 1", Numeric, Continuous, Formula(RandomNormal())),AddRows(nr));
For(i=2, i<=nc, i++, dt1 << NewColumn("Column "||Char(i), Numeric, Continuous, Formula(RandomNormal())));
// Get the data from the table into a matrix
m = dt1 << getAsMatrix;
// Close dt1 to recover some memory
Close(dt1, NoSave);
// Reshape into a column vector
m = Shape(m, NRow(m)*NCol(m), 1);
// Make a new table
dt2 = NewTable("Test in a Single Column", NewColumn("All", Numeric, Continuous, Values(m)));
// Recover memory
m = [];
Re: オーバーレイグラフ皆様のご提案に感謝いたします!
残念ながら、それは私が本当に探しているものではありません。 JMP では私が望むことを実行できないようです。 すべての列を積み重ねる必要はありませんが、すべてのデータの分布グラフが必要なためです。
DropAllOtherColumns は私が知らなかった便利な機能です。 列を積み重ねてその機能を追加することで効率が向上するかどうかを確認するために、それを試してみる必要があります。
また、ピーター、どの値がディストリビューションのどのレベルに対応するかを見ることには興味がありません。そのため、メモリを消費する側面のない、スタッキングと同等のものが必要です。 しかし、その分布グラフは私が求めているものとよく似ていますが、残念ながら私は JMP バージョン 12 を持っていません。 変数も 130 個あります。ハハ
ありがとう!
Re: オーバーレイグラフそういったオーバーレイは配信プラットフォームでは不可能だと思います。 私の経験では、スタッキングは非常に高速です。 以下のサンプル コードは、私のラップトップで数秒で実行されます。 データの数を 10^8 に増やすと速度は低下しますが、ここでのボトルネックはスタッキングではなく分散プラットフォームです。
話は変わりますが、数百万のデータのヒストグラムは、データのより小さなランダムなサブセットとそれほど変わらないように見えます。 したがって、パフォーマンスに問題がある場合は、視覚化する前にデータ セットのサイズを縮小してみることができます (または、単により多くの RAM が必要な場合もあります)。
dt = New Table("big");
nr = 100000;
nc = 100;
dt << add rows(nr);
For(i = 1, i <= nc, i++,
dt << New Column("col" || Char(i), set each value(Random Normal()))
);
dt_stacked = dt << Stack(
columns(dt << get column names),
Source Label Column("Label"),
Stacked Data Column("Data"),
Drop All Other Columns(1)
);
dt_stacked << Distribution(Continuous Distribution(Column(:Data), Outlier Box Plot(0)));
Re: オーバーレイグラフJMP について私が聞いた経験則では、データセット サイズの 2 倍のメモリを使用できるようにする必要があります。したがって、より多くのメモリが必要になる可能性がありますか?
Re: オーバーレイグラフこれにより、あまり重複せずにデータがスタックされるはずです。値がどの元の列から来たものであるかは気にしないため、ラベル列が削除されます。その他の列をすべてドロップあなたが探している部分かもしれません。
newdt = Data Table( "Big Class" ) << Stack(
columns( :height, :weight, :age ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Drop All Other Columns( 1 ),
Output Table( "hw" )
);
newdt << deletecolumns( "label" );
newdt << Distribution( Continuous Distribution( Column( :Data ) ) );

Re: オーバーレイグラフsophiaw: JMP バージョン 12 では、性別別の (BigClass) 身長 (オーバーレイ) の下のビジュアライゼーションを作成できます。

これがあなたが求めているビジュアライゼーションだと思いますか? しかし、残念なことに、Overlay 変数をスタックする必要があり、それはデータ テーブル管理の観点から問題があると言われています。 RAMはどれくらい搭載していますか? RAM を追加するとクラッシュが軽減される可能性がありますか? それはさておき、あなたが提案したのと同じくらい多くのレベルのオーバーレイ変数を使用すると、グラフがどれほど視覚的に美しく魅力的になるか疑問に思っています。 ましてや、どのレベルがどのレベルなのかを実際に見分けることはできません。 ヒストグラム オーバーレイの視覚化は、オーバーレイ変数のレベルの数が比較的少ない場合に最も効果的です。
Re: オーバーレイグラフそれは役に立ちますが、私が探しているものとはまったく異なります。 複数の列を選択して分布を作成できるようにすることを除いて、基本的に分布グラフ (列を選択してグラフ化する) とまったく同じようにしたいと考えています。 下部に値が表示され、Y 軸にデータの量が表示される 1 つのグラフが必要です。 現時点では、グラフにしたいすべての列を積み重ねてから、その新しい列をグラフ化する必要があります (これがまさに私が望んでいることです)。 唯一の問題は、一緒にグラフ化したい列が約 130 個あり、それらを積み重ねるのが不合理であることです。特に、データ テーブルが通常数十万行あり、2 つの列を積み重ねると行数が重複する場合は不合理です。 130 個を積み重ねると、JMP がクラッシュするか、膨大な時間がかかります。 この場合、X 軸がないため、グラフ ビルダーは基本的に何も教えてくれません。そのため、各バーがどれだけの量を表しているかなどわかりません。
すべての列を分離するのではなく、分布グラフをオーバーレイしてすべての列を 1 つのグラフに作成する方法はありますか?
ありがとう!
Re: オーバーレイグラフGraph Builder が希望どおりの動作をするかどうかを確認してください。すべての列を選択し、Y 軸上にドロップします。点群が表示されます。年齢、身長、体重を使用したビッグクラスは次のとおりです。

次に、右クリック->追加->ヒストグラムを選択します。

次に右クリック→「ポイント」→「削除」の順にクリックし、「完了」をクリックします。

タイトルをクリックして削除を押します(または、より適切なタイトルを追加します)

次に、赤い三角形を使用してスクリプトをコピーできます。
Graph Builder(
Size( 534, 418 ),
Show Control Panel( 0 ),
Variables( Y( :age ), Y( :height, Position( 1 ) ), Y( :weight, Position( 1 ) ) ),
Elements( Histogram( Y( 1 ), Y( 2 ), Y( 3 ), Legend( 3 ) ) ),
SendToReport(
Dispatch( {}, "graph title", TextEditBox, {Set Text( "Students" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Wrap( 2 )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "" )} ),
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg(
Hist Seg( "Histogram (age)" ),
Histogram Color( -4222943 )
), DispatchSeg(
Hist Seg( "Histogram (height)" ),
Histogram Color( -13977687 )
), DispatchSeg(
Hist Seg( "Histogram (weight)" ),
Histogram Color( -3780931 )
)}
)
)
)