JSL 経由でクリップボードからグラフィックを貼り付ける方法;あるいは、スタンドアロンの凡例を作成するにはどうすればよいですか?やあみんな、
私の (かなり限られた) スクリプト スキルの限界に達しており、助けを求めています。
私が現在やろうとしているのは、「列ごとの色」または行の凡例に基づいて凡例を作成することです。これは、特定のプロットに追加されず、別のアウトラインボックスなどに配置できます。
私がこれをやろうとしている理由は、最終的にデータベースから大量のデータを取得し、ほとんど異なる凡例を使用してさまざまなプロセスステップの多数の視覚化を提供する JSL スクリプトに取り組んでいるからです。 さらに、インタラクティブな HTML ファイルとして配布したいと考えています。 グラフが多くなり、スクロールも多くなるので、アウトライン ボックス/スクロール ボックスの配置を生成して、グラフをスクロールするときに凡例と、場合によっては書かれた情報が (ウィンドウの別の部分に) 表示されたままになるようにしたいと考えています。
これまでに成功したのは、生成された凡例のボーダーボックスをクリップボードにコピーすることです(1つは、「行凡例」がインストールされた一般的な一方向プロットを指します)。
rOne = One << report;
Link = rone[Owner Box(1)] << parent;
show (Link);
Link << copy picture
これにより、凡例の境界ボックスがクリップボードにコピーされます。 たとえば、それを Word に貼り付けると、探していたものを正確に取得できます。 残念ながら、グラフィックスをクリップボードからビジュアライゼーションに貼り付ける JSL コマンドが見つかりません。 画像ボックス環境で「クリップボードの取得」を実行してみましたが、このコマンドはテキストに対してのみ機能するようです。
クリップボードからグラフィックを貼り付けることが可能かどうか知っている人はいますか?
あるいは、スタンドアロンの凡例を作成できるコード スニプレットを持っている人はいますか (行の状態から変換しようとしましたが、あまりうまくいきませんでした)。
ご協力をよろしくお願いいたします。
ご挨拶
マルテ
マスカスタマイゼーションRe: JSL 経由でクリップボードからグラフィックを貼り付ける方法;あるいは、スタンドアロンの凡例を作成するにはどうすればよいですか?こんにちはジョン、
そうするつもりですが、スクロール ボックスに関するトピックがコード内ではなく、実際にインタラクティブ HTML 環境内にあることを確認してからにします (これはスクロール ボックスを使用する初めての試みでした。改善の余地があるかもしれません:) )
ご挨拶
マルテRe: JSL 経由でクリップボードからグラフィックを貼り付ける方法;あるいは、スタンドアロンの凡例を作成するにはどうすればよいですか?マルテ、
インタラクティブ HTML の問題に関する詳細を送信してください。
コミュニティと共有することに抵抗がある場合は、私にプライベート メッセージを送信するか、技術サポートに問題を報告してください。
ありがとう、
~ジョン
Re: JSL 経由でクリップボードからグラフィックを貼り付ける方法;あるいは、スタンドアロンの凡例を作成するにはどうすればよいですか?ご意見ありがとうございます@MS 。
データテーブルから直接凡例を作成するというアイデアがとても気に入っています。 これは非常に便利かもしれませんが、スクリプトの最後には、大量の凡例ウィンドウが表示されます...Re: JSL 経由でクリップボードからグラフィックを貼り付ける方法;あるいは、スタンドアロンの凡例を作成するにはどうすればよいですか?迅速かつ簡単な解決策をありがとうございました@Melanie_J_Drake 、ただし、私はダンシコレのより野心的な解決策を選択しました:)Re: JSL 経由でクリップボードからグラフィックを貼り付ける方法;あるいは、スタンドアロンの凡例を作成するにはどうすればよいですか?どうもありがとうございます、 @ダンシコレ。 あなたの解決策は素晴らしいです。 私の視覚化スキームに適合させるためにコードを少しひねる必要がありましたが、非常にうまく機能しました。
まだスクロール ボックスの表示に問題がありますが、それはむしろインタラクティブ HTML ビジュアライゼーション内のいくつかのバグのようです (たとえば、データが消えます。ある特定の興味深いケースでは、プロットは JMP 環境では表示されませんでしたが、インタラクティブ HTML として保存すると (多少歪んでいましたが) 表示されました)。
あなたの働きはとても高く評価されています
ご挨拶
マルテ
Re: JSL 経由でクリップボードからグラフィックを貼り付ける方法;あるいは、スタンドアロンの凡例を作成するにはどうすればよいですか?これらの答えはどれも素晴らしいです!
多くのインタラクティブ HTML ファイルに関する gzmorgan0 の提案に追加したいと思います。 複数のインタラクティブ HTML ファイルを参照する HTML ユーザー インターフェイスを作成する 1 つの方法は、JMP のメイン メニューから [ファイル] > [パブリッシュ] を使用することです。 インタラクティブ HTML レポート用のサムネイルを含む HTML ユーザー インターフェイスが作成されます。 新しい Web レポートを使用して JSL で自動化できます。 以下は、スクリプト インデックスからの抜粋です。
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp", Invisible );
webreport =
New Web Report(
Add Report(
Distribution(
Continuous Distribution(
Column( :weight )
),
Nominal Distribution( Column( :age ) )
),
Title( "Distribution Web Report" ),
Description(
"This report was created with the sample found in the Scripting Index"
)
)
);
file = webreport << Save( "$TEMP" );
If( !Is Empty( file ),
Web( file )
);
この例ではレポートを 1 つだけ追加しますが、必要に応じていくつでも追加できます。 一時的な場所にも保存されますが、これを共有ネットワーク ドライブに設定して、その場所を同僚に送信することもできます。
Re: JSL 経由でクリップボードからグラフィックを貼り付ける方法;あるいは、スタンドアロンの凡例を作成するにはどうすればよいですか?@ダンシコレ、本当にかっこよかったです。
これは、データ フィルター コンテキスト ボックスを使用する別のオプションです。 スクリプトが少し簡単になり、インタラクティブな HTML に複数のフィルターを使用できるようになると思います。 JMP の凡例はありませんが、データ フィルターは強力です。以下に例を示します。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
nw = New Window( "Shared Local Filter",
Data Filter Context Box(
H List Box(
Current Data Table() << Data Filter( Local, Add Filter( columns( :sex ) ) ),
ScrollBox(
Platform(
Current Data Table(),
biv = Bivariate(
X( :height ),
Y( :weight ),
By( :age ),
)
)
)
)
)
);
_xxx = biv<< Xpath("//FrameBox");
_xxx << {MarkerSize(6)};
_xxx << RowLegend("sex", color(1), Marker(1)); //this will just be a reminder
nw << Save Interactive HTML("C:/temp/SharedLocalFilter.html");
@MJE本当に大量のレポートがある場合は、スクロールの代わりに、JMP によって作成された対話型 HTML ページ/ファイルへの独自の HTML インターフェイスを作成することを検討することをお勧めします。インターネット上には HTML 検索 UI の例がたくさんあります。
Re: JSL 経由でクリップボードからグラフィックを貼り付ける方法;あるいは、スタンドアロンの凡例を作成するにはどうすればよいですか?JMP がクリップボードのコンテンツを使用する場所がいくつかあります。通常は、次のようなクリップボードにコピーする方法と組み合わせられます。 axis<<軸の設定をコピーとaxis<<軸の設定を貼り付け。
あなたのユースケースでは、イメージを作成するのではなく、ボックスをコピーまたは移動することをお勧めします。行凡例からコピーするには、次のようにします。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = bivariate( y( :weight ), x( :height ) );
rbiv = biv << report;
framebox = rbiv[Frame Box( 1 )];
framebox << Row Legend( "age", color( 1 ), Marker( 1 ) );
subset = dt<<GET rows="" where=""> 58 & :weight < 95);
w = New Window("Custom Report",
H List Box(
Graph Box(FrameSize(300,300),MarkerSeg(:weight[subset], :height[subset],Row States(dt, subset))),
(biv<<REPORT></REPORT></GET>
凡例は HTML にエクスポートすると画像に変換されますが、これによりすべてが JMP 内の JMP 表示ボックスとして保持されます。ただし、複製された凡例は元の凡例のようにクリックできないことに注意してください。使用するから削除()とInsertInto()を使用すると、ボックスを複製しなくても再配置できます。これにより、あなたが提案したものと同様のスクロール可能なレポートが作成されます。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = bivariate( y( :weight ), x( :height ), by( :age ) );
rbiv = biv[1] << report;
framebox = rbiv[Frame Box( 1 )];
framebox << Row Legend( "sex", color( 1 ), Marker( 1 ) );<BR />
// extract legend and report
legend = rbiv[OwnerBox(1)];
legendparent = legend<<PARENT></PARENT>// rearrange into a scrolled layout
toprpt << Append(hlist = HListBox(scrollbox=VScrollBox(800)));
InsertInto(scrollbox, fullrpt, 1);
InsertInto(hlist, legendbox, 2);
Re: JSL 経由でクリップボードからグラフィックを貼り付ける方法;あるいは、スタンドアロンの凡例を作成するにはどうすればよいですか?メインメニュー(「貼り付け」)を使用してクリップボードから貼り付けることもできますが、あまり便利ではありません(jslでタイミングやターゲットを制御するのが難しい)。
あなたが何を望んでいるのかわかりませんが、ここでクリップボードを経由するよりも良い代替手段があると確信しています。
役に立つかもしれない一例を次に示します。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/big class.jmp");
ow = Report(dt << Oneway(Y(:Height), X(:Age)));
rl = dt << Color By Column(:Age, Make Window With Legend);
nw = New Window("row legend",
H List Box(Scroll Box(Size(400, 600), V List Box(ow, ow, ow, ow)), rl)
);
// nw << Save Interactive HTML("path/example.html");
Re: JSL 経由でクリップボードからグラフィックを貼り付ける方法;あるいは、スタンドアロンの凡例を作成するにはどうすればよいですか?正確に何をしようとしているのかはわかりませんが、Get Picture が必要なものかもしれません。 これにより、JMP 表示ツリーに配置できる画像オブジェクトが得られます。 以下は Scripting Index の例です。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( y( :weight ), x( :height ) );
rbiv = biv << report;
New Window( "Example", rbiv << Get Picture );
それはあなたが探しているものですか? これは単なる静止画像であり、インタラクティブではありません。
Re: JSL 経由でクリップボードからグラフィックを貼り付ける方法。または、スタンドアロンの凡例を作成する方法。アドインに2番目のモードを追加したいhttps://marketplace.jmp.com/appdetails/Image+to+Tableによるジェド・キャンベル .
アドインはハード ドライブから画像を読み込みます。場合によっては、クリップボードから画像を貼り付けると便利なことがあります。
クリップボードからグラフィックを貼り付ける JSL コマンドはありますか?
Re: JSL 経由でクリップボードからグラフィックを貼り付ける方法。または、スタンドアロンの凡例を作成する方法。
クリップボードからグラフィックを貼り付ける JSL コマンドはありますか?
今のところ、JSLでこれを行う方法はないと思います。JMPのウィッシュリストに追加しても良いかもしれませんね。
Re: JSL 経由でクリップボードからグラフィックを貼り付ける方法。または、スタンドアロンの凡例を作成する方法。はい、これで完了です。 クリップボードからグラフィックを貼り付けます。