列名の取得によるオーバーレイプロットの支援こんにちはすべて、誰かが私を助けることができることを願っています。
数値列の数が時々刻々と変化するチャートを作成する必要がありますが、最後に以下のスクリプトに示すように、すべての数値列をオーバーレイプロットでプロットする必要があります。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Overlay Plot( X( :name ), Y( :height, :weight ), Connect Thru Missing( 1 ) );
これは私が試したことですが、チャートは別々に作成されます、私はY軸のための指示を受け入れるのが熱いのか疑問に思います。前もって感謝します。
dt = Data Table ("Big Class");
list = dt << get column names(numeric, continuous);
show (list);
For( i = 1, i <= N Items(list), i++,
Overlay Plot(
Y( Column( list[i] ) ),
X( :name ), Connect Thru Missing( 1 ) ) );再:列名の取得によるオーバーレイプロットの手助けこれもまた異なるアプローチです。
サポートしてくれてありがとう @ian_jmp そして @ミズ
再:列名の取得によるオーバーレイプロットの手助けあなたの質問には2つの良い解決策があります。私はこれをFYIとして、3番目の選択肢として追加しています。
列名をテキストとして扱うのが好きです。列名(文字列)のリストがあるとき(特定のプラットフォームではない)、Eval List()が必要なので、プロフォーマ(標準)を使うことをお勧めします。
dt = Open("$SAMPLE_DATA/Big Class.jmp");
mylist = dt << get column names(numeric, continuous, string);
op = Overlay Plot(Y(EvalList(mylist)), X(:name), Connect Thru Missing(1));
再:列名の取得によるオーバーレイプロットの手助けありがとうございました @ gzmorgan0 お返事をありがとうございます。
私の表では連続した複数の列が数値であるが、いくつかの列でオーバーレイプロットを作成したいだけの場合は、さらに質問があります。
ループから列のリストを選択するための最善の方法は何ですか?
たとえば、ループを列3からのみ選択する(列3の数値、<= N個の項目まで)、または列1からループする(列1の数値、合計で2個のN個の項目まで)とします。
前もって感謝します。
再:列名の取得によるオーバーレイプロットの手助け私はあなたの質問を正確に理解していないので、私はあなたにカップルの指針をあげる。あなたはリストを読み、リストを扱うべきです。例えば、
mylist = words("abcdefghijklmnopqrstuvwxyz","");
show(mylist); // see the log list of characters a-z
show( mylist[ 3::nitems(mylist)-2 ] ); //see log c-x
3列目以降から始めたいのであれば、最初の3列が何であるかを知っていると思います。したがって、1つの方法は、すべての連続した列名を取得し、最初の3列の名前を削除することです。
再:列名の取得によるオーバーレイプロットの手助けこんにちは @ gzmorgan0 私の質問にそれほど明確でないことを残念に思う。
もっと深く説明しようと思いますが、私のテーブルには5列から最大7列まで含まれていて、数値列/連続列から最初の列を除外したい、または最後の2列だけを除外したいというスクリプトがあります。私が除外と言ったとき、私はget列名がそれらを除外することができると言っています。
ループを介してそれを行う方法はありますか?
もう1つの選択肢は、列の種類(数値、文字など)に関して私の望まない列が(最初の列であれば)常に最初の列または最後の2列にあることです。これを使用して列名を取得する方法もあります。ループ?
ありがとうございました!!!
再:列名の取得によるオーバーレイプロットの手助け申し訳ありませんが、これはまだ "crystal"ではありません。 最初の列を参照するとき、テーブルの最初の列か最初の連続列のどちらですか。最後の2列についても同じ質問です。 また、除外したい列の名前を知っていますか?大文字と小文字を区別する必要がありますか?
私は感じています、あなたは特定のコラムをスキップする方法を尋ねているかもしれません。何を探しているのか正確にはわからない、これは役立つかもしれない例です。ノリストスキップする既知の名前のリストです。
Names Default to Here(1);
dt = Open("$sample_data/Semiconductor Capability.jmp");
cnames = dt << get column names("numeric", "String");
nolist = {"wafer", "site", "datetime"};
nw = New Window("Overlay Plots", lub = LineUpBox(ncol(3)));
For(i=1,i<=nitems(cnames), i++,
if (contains(nolist, lowercase(cnames[i]) ), continue() ); //next i
if( Col Number(column(cnames[i]) ) == 0 | Col Std Dev(column(cnames[i])) == 0, continue() ); //next i, no need to plot a constant.
//otherwise
vl = VlistBox(op = Overlay Plot(Y( Column(cnames[i])), X(:lot_id) ) );
Report(op)[OutlineBox(1)] << set title("Overlay Plot: " || cnames[i] || " vs. lot_id");
lub << append(vl);
);
スキップする名前がわからない場合は、それらがテーブル内の特定の位置にあることがわかります。ノリスト
//or create nolist
nolist = {};
Insert Into(nolist, Column(dt,1) << get name);
Insert Into(nolist, Column(dt, ncol(dt)-1) << get name);
Insert Into(nolist, Column(dt, ncol(dt)) << get name);
show(nolist);
これらの名前をcnameから削除することもできます。[これらの位置がどこから来るのか正確にはわかりません。] 1番目と最後の2つの連続した列を削除するだけの場合は、スクリプトに表示されているとおりにすべての連続した列を取得します。
cnames = cnames[ 2::nitems(cnames)-2 ];
現在、cnameはそれらの値を持たなくなりました。
再:列名の取得によるオーバーレイプロットの手助けありがとうございました @ gzmorgan0 nolist = {}を使わないでください。そしてcnames = cnames [2 :: nitems(cnames)-2]。探していたオプションがあります。
それほど明確でないのでごめんね。
特定の列の位置に基づいて、列の名前を(列の種類に関係なく)取得する方法を見つけたかっただけです。
あなたのanswwrはすでに私の懸念を直すのを助けてくれました。
再度、感謝します。
再:列名の取得によるオーバーレイプロットの手助けの議論 Y(...) によって実行時に評価されないようですオーバーレイプロットプラットフォーム
プロットを作成する前に、リスト変数を明示的な列のリストに強制的に置き換える1つの方法があります。
dt = Open("$SAMPLE_DATA/Big Class.jmp");
list = dt << get column names(numeric, continuous);
op = Expr(
Overlay Plot(Y((Expr(list))), X(:name), Connect Thru Missing(1))
);
Eval(Eval Expr(op));再:列名の取得によるオーバーレイプロットの手助け参考までに、これも動作します。
myOP = dt << Overlay Plot(Y(dt << get column names(numeric, continuous)), X(:name), Connect Thru Missing(1));