グラフ ビルダーを使用して、グループ化された Y データを含むグラフを作成する<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、
私はアマゾンの林冠を専門とする熱帯生態学者です。 私は博士論文を書いており、JMP Pro (私はプログラミング経験のないかなり新しいユーザーです) を使用してデータに対して PLS やその他の分析を実行しています。 樹木、葉冠レベル (日向または日陰)、葉年齢ごとにグループ化された葉の大規模なデータセットがあります。 最初の分析の 1 つとして、12 本の木があり、そのうちの 4 つは日向葉と日陰葉の両方があり、残りは日向葉だけです。 葉の水分含有量、葉の厚さ、葉の生乾重量、炭素含有量%など、さまざまな葉の特性のグラフを作成する必要があります。これらのグラフは次のように構築する必要があります。
X 軸 = 葉齢
Y = 樹木ごと、太陽と日陰の林冠の位置ごとにグループ化された葉の特性 (葉の厚さなど)
これらのグラフを作成しようとしましたが、各木ごとに Y スケールを分割したグラフが得られ続け、グラフに太陽と日陰のグループを入れようとすると、すべてがさらに悪化します。 これらの Y グループ化されたグラフの作成方法と、多数のグラフの作成を自動化する最適な方法について誰かがアドバイスしていただければ、非常に感謝します。 よろしくお願いします!;
Re: グラフ ビルダーを使用してグループ化された Y データを含むグラフを作成する早速のご返信ありがとうございます。 実際、数値列の一部は文字モードになっていました。 これを修正したところ、グラフに意味があり、素晴らしいパターンが表示されました。本当にありがとうございます!!
Re: グラフ ビルダーを使用してグループ化された Y データを含むグラフを作成するはい、それは役に立つ手がかりです。 平均的な RoC 列は数値列ではなく文字列であり、JMP はそれを単なる名前のリストとして扱っているようです。 これは、[列情報] ダイアログで修正できます。 データ タイプを数値に変更し、モデリング タイプを連続に変更します。
Re: グラフ ビルダーを使用してグループ化された Y データを含むグラフを作成するMS と Xan のアドバイスに感謝します。後で、グラフを出版に十分な見栄えにする必要があるときに、Illustrator と OmniGraffle の両方を検討します。 現在、データの初期視覚化を上司に提示するために大量のグラフを作成しています。
これまでのところ、葉の老化に伴うさまざまな物理的特性 (葉の厚さ、面積、乾燥重量など) および化学的特性 (%C、%nN など) を表す折れ線グラフの最初のグループを作成しました。 葉の厚さに関するグラフの進化は、これらの投稿の履歴で見ることができます。 あなたの助けにより、樹木ごとの樹冠位置ごとの葉齢ごとの葉のグループの平均値を表す折れ線グラフを作成することができました。 現在、同じ物理的および化学的葉齢から次の葉齢までの平均変化率 (平均 RoC) を表す新しいグループのグラフを作成しようとしています。 しかし、かなり早い段階で問題に遭遇しました。 Excel でさまざまな葉のプロパティの平均値から平均 RoC (avg RoC=y2-y1/x2-x1) を計算し、そのデータを新しい JMP データテーブルにインポートしました。 しかし、平均 RoC の折れ線グラフを作成しようとすると、再び問題が発生し始めました。 下のグラフからわかるように、負の Y 軸値が何らかの理由で反転されており、以下に示すケースでは、-23.155 という値を持つ最大の負の平均 RoC (データを再確認しましたが、この値は正しい) が中央のどこかに再配置されています。 行の順序にチェックを入れたり外したりしてみましたが、Y 軸設定ウィンドウを開いたときに、正しい最小値と最大値の前に次の行が見つかりました。
形式: 0 は -0.004850 です。 56は5.805832です
これに関係があるのではないかと思いますが、それがどのように機能するのか、どうすれば修正できるのかがわかりません。 このグラフのスクリプトも確認しましたが、これへの参照が見つかりません。 これについて手伝ってもらえますか?

ご協力いただき誠にありがとうございました。
セシリア
Re: グラフ ビルダーを使用してグループ化された Y データを含むグラフを作成するMac では、OmniGraffle は使いやすいベクター グラフィックス アプリです。 JMP 出力で使用するには、「JMP から印刷」を使用し、「PDF として保存」を選択します。 OmniGraffle では PDF ファイルを開くことができます。 Adobe Illustrator はより多くの形式を処理できますが、使いにくく、高価です。 一部のアナリストは、この種のグラフィックのクリーンアップを「ポストプロダクション」編集と呼んでいますが、これは (まだ) JMP の専門分野ではありません。
Re: グラフ ビルダーを使用してグループ化された Y データを含むグラフを作成する基準線を追加するには、軸をダブルクリックして軸設定パネルを表示します。 そこで、1 つ以上の基準線の値、色、スタイルを指定できます。
上記のスクリプト例のグラフでは、次のコードによって 60 の位置に灰色の y 軸基準線が追加されます。
report(gb)[scalebox(2)]<<ADD ref="" line=""></ADD>
ベクトル描画プログラムとは、グラフ作成ソフトウェアを意味するのではなく、グラフィックスのあらゆる側面を編集できる Adobe Illustrator のような一般的な描画ソフトウェアを意味します。 JMP からコピーして Illustrator に貼り付けるだけです。 基本を学ぶのは難しくありません。
Re: グラフ ビルダーを使用してグループ化された Y データを含むグラフを作成するこんにちは、MS、
ご返信ありがとうございます。後でスーパーバイザーにグラフを送信する必要があるので、グループ ボックス全体を削除するというご提案を試してみます。後でさらに実験してみます。 ただし、これらのグラフについてもう 1 つ質問してもいいでしょうか。0 を横切る灰色の線を追加するにはどうすればよいですか。
「ベクター描画プログラム」についての言及に興味があるのですが、これにどのようなソフトウェアを使用しているかお聞きしてもよろしいでしょうか? 私は MAC を使用していますが、「MAC 用のベクトル描画プログラム」をグーグルで検索したところ、これらのプログラムが何をするのか少し混乱しました。グラフを作成するように設計されていないようです。グラフをこれらのプログラムにインポートし、必要に応じて追加したり削除したりするだけですか? これが私が進みたい方向かどうかわかりませんが、この種のプログラムを学ぶのは非常に難しいのではないでしょうか? 私は以前、Sigmaplot (Mac で Paralleles を使用しています) を学習したり、R、Matlab、または Python プログラミングを学習したりすることをお勧めしましたが、オプションについて少し混乱しています。 私は大学を通じて Sigmaplot と Matlab にアクセスできます。 SIgmaplot を試してみましたが、あまり進歩しませんでした。Matlab は試していませんでした。 コンピューターに R をインストールしましたが、いくつかの Python モジュールのインストールで立ち往生しています。 現在選択肢の多さに圧倒されているので、これらすべてについてのアドバイスや提案をいただければ非常に感謝しています。
Re: グラフ ビルダーを使用してグループ化された Y データを含むグラフを作成するグループボックス全体を削除することはできるのですが、ヘッダーだけを削除する方法が分かりません。 特殊な (文書化されていない) タイプのディスプレイ ボックスのようです。
以下は、グループ ボックスを削除する方法の例です。 また、新しいグループ ラベルを追加する方法も示します。
dt = open("$sample_data\Big Class.jmp");
gb=graph Builder(
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Group X( :sex ) ),
);
Report( gb )[Graphbuildergroupbox( 1 )] << delete;
Report( gb )[framebox( 1 )]<<ADD text="" annotation=""></ADD>
私はデータ内のパターンと関係を簡単に発見する方法としてグラフ ビルダーを使用しています。すべての高度なオプションを使用すると、かなり複雑なパターンを検索できます。 ただし、グラフが決まったら、ほとんどの場合、それをベクトル描画プログラムに取り込んで、プレゼンテーションや原稿で使用する前に詳細に編集できます。
Re: グラフ ビルダーを使用してグループ化された Y データを含むグラフを作成するホーラ・ザン、
早速のご返信、誠にありがとうございます。
1. グループ X でサイズ メッセージを使用するという提案を試しましたが、以下のグラフに示すように、グループ X ヘッダーを実際のキャノピーの位置と同じレベルに移動しただけです。

すでに設定に入っていましたが、グループ X の端をグラフの下部に変更する以外に、グループ X をフォーマットする方法はありません。
X グループの見出しを削除する必要があるという説明に関しては、単に必要ないからです。 いずれにせよ、図の凡例の「SU」および「SH」ラベルが何を意味するのかを説明するメモを追加する必要があるため、見出しは不要です。 見出しがないように列の名前を消去しようとしましたが、名前のない列は許可されていないようです。
以下に含めたスクリプトの一部で、X グループ変数が " " を使用して宣言されていることに気付きました。これらは、X 変数と同様にテキスト/見出し名に使用されていると思います。 なぜ X グループもこのように宣言されているのかわかりません。 実は、X グループの名前を Canopy Position に変更して、Y 変数として宣言しているので、変数名に記号が含まれる場合に「 」が使われているのではないかと思いますが、正しいでしょうか?
Variables(
X( :Name( "Leaf Age Class (age in cummulative weeks)" ) ),
Y( :thickness ),
Group X( :"SU-SHCanopyPos", Size(1), Levels( 2 ) ),
Overlay( :tree )
),
OK、これまでのところ私が試したものは何も機能しておらず、他のすべてのヘッダーでは簡単にカスタマイズできるのに、なぜ X および Y グループ ヘッダーをカスタマイズできないのか混乱しています。これはちょっとした設計上の欠陥のような気がします。 X グループ ヘッダーを削除する方法について、あなたまたは他の誰かが何かアイデアを持っていますか?
どうもありがとう、
セシリア
Re: グラフ ビルダーを使用してグループ化された Y データを含むグラフを作成する1. グループ X ヘッダーを削除する必要性について詳しく説明してもらえますか? 何らかの方法でパネルにラベルを付ける必要があるはずです。 別のスタイルが必要な場合は、環境設定で対応できる場合があります。 グループ X のサイズ メッセージを使用すると、基本的にレベル名を非表示にできることに気付きました。
Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Variables( X( :height ), Y( :weight ), Group X( :sex, Size( 1 ) ) ),
Elements( Points( X, Y ), Smoother( X, Y ) )
);
1b. JSL を学ぶのはそれほど難しくないようです。 そう言ったのは、私がこれを使い続けているので使いやすいからではなく、この夏に数人の学生インターンがいて、数日で素晴らしいプロジェクトを、数週間で複雑なプロジェクトを作り上げていたからです。 いずれの場合も、[ヘルプ] メニューの [スクリプト インデックス] と、すでに説明した [スクリプトに保存] が、すぐに使いこなすための鍵となります。
2. 素晴らしい。
3. ネストされた X 軸が線をどのように接続するかを忘れていました。 醜い回避策は、Canopy をオーバーレイ変数と結合することですが、その場合、すべての行が異なる色になり、ツリーの値間で一致させるために一部の色を手動で変更する必要があります。
Re: グラフ ビルダーを使用してグループ化された Y データを含むグラフを作成するホーラ・ザン、
早速のご返信ありがとうございます。
あなたのコメントに関して:
1. はい、私も昨夜同じ結論に達し、希望通りの動作をさせるためにグラフ スクリプトの一部を書き直すのにイライラする午前中と午後を費やしました。 しかし、私はプログラミング経験がほとんどないので、あまりうまくいきませんでした。 さまざまなコード セクションの 95% が何のためにあるのかを解明しましたが、何も書き換えたり、グループ X ラベルを削除するためのコード行を追加したりすることはできませんでした。 以下に、最新のグラフのスクリプトを貼り付けました (別のファイルに保存する方法がわかりません)。 グループ X 変数宣言の「名前」部分を取得してみましたが、うまくいきませんでした。 また、グラフのタイトルを削除するものと同様の Dispatch 行を追加しようとしましたが、これも機能しませんでした。 これについて手伝ってもらえますか? やるべきことがたくさんあるので、プログラミングを学ぶことを避けてきました。プログラミング言語を学ぶのに 1 か月ほど (とても希望を持って!) かかるのは時間がかかりすぎるように思えますが、これは避けられないと思うところまで来ています。グラフ ビルダーで既存の利用可能なグラフを変更できるようにするために、基本的なスクリプトを学ぶのはどれほど難しいでしょうか? これに関して何かアドバイスはありますか?
Graph Builder(
Size( 868, 525 ),
Show Footer( 0 ),
Lock Scales( 1 ),
Auto Stretching( 0 ),
Variables(
X( :Name( "Leaf Age Class (age in cummulative weeks)" ) ),
Y( :thickness ),
Group X( :Name( "SU/SHCanopyPos" ), Levels( 2 ) ),
Overlay( :tree )
),
Elements( Line( X, Y, Legend( 5 ), Row order( 0 ), Summary Statistic( "Mean" ) ) ),
SendToReport(
Dispatch(
{},
"Leaf Age Class (age in cummulative weeks)",
ScaleBox,
{Show Major Ticks( 0 ), Show Minor Ticks( 0 ), Rotated Labels( "Automatic" )}
),
Dispatch( {}, "thickness", ScaleBox, {Min( 0.12 ), Max( 0.46 ), Inc( 0.05 ), Minor Ticks( 1 )} ),
Dispatch( {}, "", ScaleBox, {Min( 0 ), Max( 0 ), Inc( 1 ), Minor Ticks( 0 )} ),
Dispatch( {}, "", ScaleBox( 2 ), {Min( 0 ), Max( 0 ), Inc( 1 ), Minor Ticks( 0 )} ),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
5,
Properties( 0, {Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 1, {Line Color( -16715009 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 2, {Line Color( 73 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 3, {Line Color( 24 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 4, {Line Color( -16739840 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 5, {Line Color( 36 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 6, {Line Color( 14 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 7, {Line Color( 0 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 8, {Line Color( 75 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 9, {Line Color( 1 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 10, {Line Color( 20 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} ),
Properties( 11, {Line Color( 42 ), Marker( "FilledCircle" ), Marker Size( "Medium" ), Fill Color( 0 )} )
)}
),
Dispatch( {}, "400", LegendBox, {Set Title( "Tree" )} ),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "Leaf Thickness (mm)" )} ),
Dispatch( {}, "Graph Builder", FrameBox, {Marker Size( 2 ), Line Width Scale( 3 )} ),
Dispatch( {}, "Graph Builder", FrameBox( 2 ), {Marker Size( 2 ), Line Width Scale( 3 )} )
)
);
2. Unicode のヒントに感謝します。これでうまくいきました。
3. Canopy と Leaf Age をネストしてみましたが、グラフが結合する結果が気に入らなかったです。 日向葉と日陰葉の両方を持つ木は、日向線と日陰線がつながった長い一本の葉になってしまい、混乱してしまいます。 そこで、以下のグラフに見られるように、葉齢クラス O/S1 の 2 つの異なる週齢をまとめました。

いつもご協力いただき誠にありがとうございます。
セシリア
Re: グラフ ビルダーを使用してグループ化された Y データを含むグラフを作成する素晴らしい仕事でした、セシリア、私の簡単な説明からすべてを理解しました。
1. ライブビューでグループ X ラベルをオフにする方法はないと思います。 右クリックして一番下に移動するか、[設定] > [プラットフォーム] > [グラフ ビルダー] でスタイルを変更できます。 または、グラフをジャーナリングしてデッド ビューを作成し、「ファット プラス」選択ツールを使用してグラフの一部を削除することもできます。
2. JMP には上付き文字スタイルがありませんが、上付き数字用の特別な Unicode 文字があり、それらを名前に使用できます。 このフォーラムがサポートしている場合の例は次のとおりです: m²。
3. X 軸はグループ化レベル内で同一です (グループ間の視覚的な比較を可能にするため)。 ただし、Canopy と Leaf Age を X 軸上で一緒にネストすることができます。 その場合、欠落しているサブレベルは省略されます。これは希望どおりに聞こえます。
Re: グラフ ビルダーを使用してグループ化された Y データを含むグラフを作成するホーラ・ザン、
あなたの推奨事項に感謝します。それらは的確でした。 あなたと Jeff の助けのおかげで、私が作成したいグラフにほぼ到達しました。 これまでに作成したグラフは次のとおりです。

これらのグラフに関してさらに 3 つの質問があります。
1. X グループのレジェンド「SU/SHCanopyPos」を削除するにはどうすればよいですか? 凡例をダブルクリックしたり右クリックしたりしてスクリプトをいじってみましたが(私のプログラミングスキルはありませんでした!)、この凡例を削除する方法は見つかりませんでした。
2. Y 凡例の一部のテキスト (m2 などの ei 単位) に上付き文字を付けるにはどうすればよいですか?
3. この質問はもう少し難しいと思います。X グループでわかるように、「週齢」データを葉齢クラスに連結した後、2 つの別々の O/S1 年齢クラスができました。 これは、この年齢クラスの日向葉の寿命が日陰葉 (79 週) よりも短い (61 週) ためです。 キャノピーの位置ごとに O/S1 年齢クラスを 1 つだけ取得し、それぞれの年齢クラスを正確に「週数」で取得する方法はありますか?
最後に、列スイッチャーを使用して同様のグラフを作成しましたが、あまり気に入らず、少し面倒だと感じました。 そこで、スクリプト オプションを試してみたところ、はるかに簡単であることがわかりました。
ご協力に改めて感謝申し上げます。
セシリア
Re: グラフ ビルダーを使用してグループ化された Y データを含むグラフを作成するこんにちは、セシリアさん
1 つのグラフ上のすべてのツリーを取得するには、オーバーレイ スロットに Tree を配置します (そうしないと連続変数がビン化される可能性があるため、Tree 列が公称としてマークされていることを確認してください)。 その場合、Canopy 変数はグループ X またはグループ Y スロットのいずれかになければなりません。
本当に望むなら全て1 つのプロット内の線で、Tree と Canopy を連結する新しい変数を作成し、その変数でオーバーレイすることができます。 これを行うには、新しい文字列を作成し、他の 2 つの列を連結する式をそれに与えます。 何かのようなもの:木 || " " || :キャノピー。 "||"テキスト連結操作です。
同様の方法を使用して、樹齢値を追加できます。 :年齢区分 || "(" || Char(:週齢) || ")"
SU/SH の順序を制御するには、[列情報] ダイアログの [キャノピー] 列に [値の順序] プロパティを追加します。
同様のグラフを多数作成するには、列スイッチャー (赤い三角 > スクリプト > 列スイッチャーの下) を使用して対話的に実行するか、JSL スクリプトを使用してプログラム的に実行できます (赤い三角 > スクリプト > スクリプト ウィンドウに保存し、Y 名を編集します)。
ザン
Re: グラフ ビルダーを使用してグループ化された Y データを含むグラフを作成するこんにちは、ジェフさん
ご返信とサンプルグラフの作成に時間を割いていただき、誠にありがとうございます。また、元の投稿で十分な情報を提供できなかったことをお詫び申し上げます。 実際、あなたのグラフは私が遭遇した問題を非常によく示しています。 例としてグラフを使用します。
1. 太陽と日陰の葉のキャノピーの位置にオーバーレイ ロールを使用することに関するヒントをありがとう。これで 1 つの問題が解決されました。 さまざまなツリーに対してグラフの左側にある Y グループの役割を使用しています。これにより、あなたのものに似ていますが、垂直ではなく水平に配置されたグラフが得られます。 以下に示すように、オーバーレイ ロールを使用してグラフを更新しました。

ただし、上記のことを次のようにしたいと思います。
1. 各ツリーのグラフではなく、単一のグラフであること。
2. 各葉齢クラスが表す同等の週数を括弧内に追加したいと思います (例: Y1(1)、Y2(2) など)。 このデータはデータ テーブルの別の列にあります。JMP Pro で 2 つ以上の列を連結するにはどうすればよいですか?
2. 次のように 2 番目のグラフも再作成しました (このグラフは、前のグラフよりも混雑が少ないため、非常に気に入っています)。

上記もお願いします:
1. ツリーごとに 1 つのグラフではなく、1 つのグラフにする
2. キャノピーの位置の順序を入れ替えて、SU が左側、SH が右側になるようにします。 X 軸と Y 軸の順序を逆にしましたが、X 軸と Y グループ化ロールのこのオプションが見つかりません。
情報を正しく表示するためにグラフを整理した後、Y 軸を変更するだけで、同様のグラフを大量に作成する方法を見つけたいと思います。
以上で私の疑問が解消されることを願っておりますので、ご協力に改めて感謝申し上げます。
セシリア
Re: グラフ ビルダーを使用してグループ化された Y データを含むグラフを作成するこんにちは。
あなたが何を探しているのか正確にはわかりません。
いくつかのデータをモックアップしてここに添付しましたので、最初に何を始めたかがわかります。
これは、グラフの上部にある X Group ロールを使用して作成したグラフです。 これにより、ツリーごとに 1 つのグラフが得られます。
また、オーバーレイ ロールの Sun または Shade 列を使用して、両方を持つ木について Sun の 1 行と Shade の 1 行を取得しました。

あるいは、グラフの右側にある Y グループ ロールの Sun または Shade 列を使用して、これを取得することもできます。

私の推測が正しくなかった場合は、どのような一連のグラフが必要かをより詳しく説明していただければ、その作成方法をご紹介いたします。
-ジェフ