円グラフ+ヒートマップこんにちは、みんな、
海洋生物学者として、私は最近、非常に気に入っているサンゴ礁のデータを視覚的に表現したものに出会いました (添付ファイルを参照)。 この中には、さまざまな円グラフが表示されます。個々のウェッジは基本的に、特定のパラメーターの相対レベルを示すヒート マップです。 これを自分の研究に応用したいと考えています。ヒート マップ自体としてではありませんが、グラフ ビルダーを使用して実行できると思います。 これが私のアイデアです。4 つの応答変数 (A、B、C、D) を表す 4 つの円のくさびが必要だとします。 サイズは重要ではないので、等しい領域を占めるようにそれぞれの値に 0.25 を与えます。 カラーをオーバーレイできることがわかったので、「カラー」列を作成し、4 つの応答変数に値を割り当てましたが、グラフはそれに応じて変化しませんでした。
値の色付けとラベル付けを試しましたが、うまくいきませんでした。 テーブルのセッティングを間違えただけのような気がします! 助言がありますか?? ありがとう!
Re: 円グラフ+ヒートマップアンダーソン、
その人体の例がここで使用されています。 JMP を使用した個人の食事とフィットネス データの分析そしてここ: JMP® 12 でカスタム マップを選択フィルターとして使用し、ワークアウト データのグラフをサブセット化して探索する
あなたのことを見ましたDiscovery Summit Americas 2020 プレゼンテーション録音 :サンゴ礁の運命の予測に向けて (2020-US-45MP-615)でもライブで見るのが楽しみです!
~ジョン
Re: 円グラフ+ヒートマップジョン、
これは素晴らしいことです。今週はその講演を必ず見るつもりです (予定に載っています)。 この機能と「グラフレット」は、Graphbuilder のグラフにデータをオーバーレイしたり、カスタムの図にデータをプロットしたりするためのあらゆる種類の扉を開くと思います (先ほど話した人体の例は、JMP Web サイトのどこかにあります)。チュートリアルの形式だと思います)。 誰かが美学の観点から何か提案を持っているかどうかを知りたいと思っています。 私は個人的に円グラフが好きですが、もしかしたら私たちがまだ検討していないもっと良い方法があるかもしれません? ビデオゲーム風の「ヘルスバー」というアイデアも気に入っています。
考えてみれば、これは疫学者にとって有益かもしれません。 たとえば、感染率を緯度経度グリッド上に重ねて表示し、等高線図上に患者または患者グループに関する追加情報を含むウェッジ/円グラフを固定した場合、次のような複雑なレイヤーを追加できる可能性があります。標準の GraphBuilder 機能 (ほとんどの種類のデータでは、グラフレットもこれに使用できると思いますが)。
Re: 円グラフ+ヒートマップこのディスカッションが私に、JMP Discovery Americas 2020 のための論文とプレゼンテーションを作成するきっかけを与えました。海洋生物学者、ビデオ ゲーム、JMP を組み合わせると何が得られますか? (2020-US-45MP-543)
論文を準備する際に、この投稿で説明されているテクニックを実験して改良する時間がありました。
このペーパーには、いくつかのリソース (カスタム マップと例) とその使用方法に関する詳細な手順が含まれています。
この投稿と私の論文がお役に立てば幸いです。
ありがとう、
~ジョン
Re: 円グラフ+ヒートマップアンダーソン、
グラフ ビルダーには、マップ上の特定の位置に棒グラフや円グラフを配置する方法はありません。 次の方法で回避できます。
- マップ ロールでサンプル番号を使用するグラフ ビルダー グラフからテーブルを作成します (バーまたはカスタム マップ形状を使用して構築されます)。 これにより、サンプル番号列と各サンプルの画像列を含むテーブルが作成されます。
- 生成されたテーブルから画像列をアンスタック データ テーブルにコピーして戻します (画像列がサンプル番号の順序と一致していることを確認してください)。 **
- a.画像列にラベルを付けるか、または b. 画像列に「マーカーとして使用」を設定します。
- スタックされていないデータ テーブルを使用し、塩分または温度列を色の役割として使用して、グラフ ビルダーで等高線マップを作成します。
- ポイント要素を追加します。必要に応じて、別の色の役割を使用します。
- 手順 3.a に従うと、ホバー ラベルに画像が表示されます。 いくつかのホバー ラベルを固定し、テキストを置換して、不要なホバー ラベル テキストを削除できます。
- ステップ 3 b に従うと、すべてのマーカーが画像列の画像とともに表示されます。 これにより、表示が乱雑になる可能性がありますが、ズームインするか、重なっている画像を削除することで解決できます。
** これらは同じ順序ではないことがわかり、画像列をコピーする前に並べ替える必要がありました。 後から考えると、結合または仮想結合を使用して、正しい行に画像を取得できたことがわかりました。 最初にこれを読んでおけばよかったと思います: https://community.jmp.com/t5/JSL-Cookbook/Geographic-Maps-with-Graphs-as-Markers/ta-p/53782。
3.a と 3.b の両方をここに公開しました。
https://public.jmp.com/packages/Heat-contour-with-image-annotations/js-p/5d64597acf28b80f980812ba

バーを描画するために使用した方法について。 カスタム マップは使用せず、カスタム グラフィックス スクリプトを使用してバーの長さを計算し、各ポイントの上にバーを配置しました。
合理化に関しては、多くの場合、JSL が最良の選択です。
~ジョン
Re: 円グラフ+ヒートマップジョン、
これは素晴らしい! これはグラフ ビルダーで直接実行できると思いますか、それともスクリプト作成と高度な知識が必要だと思いますか? スクリプトを変更するだけで済むことはわかっていますが、大量のデータの円グラフに対してこのオプションを使用する場合は、合理化の観点から考えています。 カスタム形状が必要でしたか、それともマップ内のすべてのアイコンを手動で固定しましたか?
Re: 円グラフとヒートマップアンダーソンとDS、どういたしまして。
地図上の各地点に3つの変数を注釈として表示する、より優れたカスタムグラフィックスクリプトの例を公開しました。

JMP Publicに掲載されています。以下のリンクをクリックしてください。
https://public.jmp.com/packages/5d605bce3560ce0d2cafd48b
各点につき、3つの架空のセル値を単純な棒グラフ(太線)で表現しました。円グラフはもう少し手間がかかりますが、概念実証としてこの例を示したいと思います。JSLスクリプトは、JMP Publicの投稿詳細から閲覧およびダウンロードできます。
~ジョン
Re: 円グラフ+ヒートマップおお! これは素晴らしい。 ジョンの助けと情報をありがとう。 私はカスタム マップ機能が存在することを全く知らなかったので、研究しているサンゴのトレースされた画像にデータをプロットするためにそれを使用できるすべての素晴らしい方法を考えるだけで、1 日か 2 日その「ウサギの穴」に入りました (悲しいことに、ただし、同じコロニー内で大量のサンプルを採取することはめったにありません。ただし、これは間違いなく後回しのプロジェクトのアイデアであり、これは結果を表示する素晴らしい方法です)。
どのような種類の形状や画像などにデータをプロットする機能は、間違いなくより多くの人に知られるべき JMP 機能だと思います。将来的には、これを (パッケージとしてではなく) 実際の機能としてパッケージ内に含めることをお勧めします。ただし、アドインは当面は正常に動作します)。
DS へ: 実は、JMP で円グラフと地図を作成して (地図上にデータをプロットするのは、1、2 回やれば JMP で非常に簡単です)、それから Adobe を使用して図の種類を作成することを考えていたところでした。私の元の投稿にも示されていますが、JMP にはプロット上のデータ ポイントに注釈を付け、画像をデータ ポイントに固定する方法があります。 したがって、少し練習して作業すれば、JMP だけで私の元の投稿にある実質的にマップとデータ全体の図を作成できる可能性が非常に高くなります。 実際、今後数週間のうちにこれを実行してみようと思うかもしれません。
解決策を提供してくれた John に改めて感謝します。
Re: 円グラフ+ヒートマップこんにちは@John_Powell_JMP 、
追加情報をありがとうございます。 このディスカッションをブックマークしたので、ファイルに保存しておいて、送信された追加情報をもう一度読むことができます。
申し訳ありませんが、あなたの投稿を解決策としてマークするという意味を説明できていないのではないかと心配しています。私が元の投稿者ではないため(したがってそのオプションがないため)、あなたが解決策としてマークするということはできないと思います。あなたのせいではありません。ヒートマップについては触れませんでした。 そのように読めたら申し訳ありません。戻って再読しましたが、確かにそのように言っているように聞こえます(私の側では良くありません)。
私は JSL に精通しており、他の多くのことに使用していますが、このようなカスタマイズされたグラフ作成に JSL を使用しようとしたことはありません。そのため、これは私にとって新しい分野になります。
ありがとう!、
DSRe: 円グラフ+ヒートマップ親切な言葉をありがとうございます@SDF1 。
確かに、これらのグラフィックを背景マップ上に重ねるという部分には完全には答えていません。
マップ上にオーバーレイするには、[カスタマイズ] ダイアログのスクリプトを使用するなど、別のメカニズムが必要になります。 
いくつかのサンプル スクリプトが提供されています。

カスタマイズ機能に関する情報は、以下を参照してください。
https://www.jmp.com/support/help/14-2/customize-graphical-elements.shtml
円を使用した小さな例を次に示します。

Re: 円グラフ+ヒートマップこんにちは@John_Powell_JMP 、
迅速かつ明確なご返信をありがとうございます。 あなたの返答を受け取る前に、元の投稿をもう一度読みましたが、あまりにも急いで流し読みし、最後の 5 つのコラムについて言及していることに気づきました。
次に、JMP Public からコンテンツをダウンロードし、詳細を調べたところ、ラベル列プロパティのマップ形状への参照に気づきました。 私はこれまでその可能性を検討したことがなかったので、マップを少し読んで実験してきました。 とてもかっこいい!
元のポスターの例のように、世界地図上でデータが収集された場所の経度/緯度の位置も背景にオーバーレイしたいと考えていました。 ただし、これはグラフ ビルダーで実行できる範囲を超えていると思います。しかし、それはクールでしょう。 素晴らしい視覚化アイデアです。 はい、それが私の仕事にどのように役立つかは確かにわかります。 いくつかのデータでテストしてみましたが、シェイプ ID の名前を調整するだけで、機能しました。 ありがとう、とても良いです!
ちなみに、あなたの投稿を解決策としてマークします (少なくとも円グラフについては) が、それはできないと思います。 元の投稿者が望んでいたように、JMP は円グラフと等高線 (またはヒートマップ) の両方を実行できますか?
ありがとう!、
DSRe: 円グラフ+ヒートマップSym GE HMS、host GE HMS、コロニーの色、変動性、および合計異常指数という名前の列を積み上げました。 JMP Public 投稿に添付されたテーブルでは、「Responses」という名前の列の下にあり、「Label」列に各応答のラベル (古い列名) が表示されます。
JMP は、断面「ブルズアイ」チャートを自動的に作成しません。 いくつかの手順が必要です。
- 私は、セクションとブルズアイを定義する JMP Public 投稿に付属しているカスタム マップ シェイプ ファイルを作成しました。
- グラフ ビルダーで、Label 列を Shape ロール (左下) にドラッグすると、カスタム形状のアウトラインが表示されます。
- 色を適用するには、[Responses] 列を [Color] ロール (右側) にドラッグしました。 これにより、各セクターの平均応答が形状に入力されます。
- 各サンプルを分離するには、サンプル番号列をラップ ロール (右上) にドラッグしました。
素晴らしい視覚化のアイデアを自分の手柄にすることはできません。 元のポスターから来ました。
あなたにも役立つかもしれないことを見てうれしいです。
~ジョン
Re: 円グラフ+ヒートマップこんにちは@John_Powell_JMP 、
私はこれを自分のビジネスで行うレポートの一部に適用できるかどうかを確認するために、実際に試してみたいと非常に興味があります。
興味のある列ごとに積み上げたとありますが、それはどの列ですか? データテーブルをダウンロードしましたが、どの列を積み重ねる必要があるのかわかりません。 また、JMP は円グラフを部分的な「目玉」として自動的に生成しますか、それともこれは別の設定ですか。 こんなものは今まで見たことがありません。 これは素晴らしい視覚化であり、私にとって新しいものなので、興味があります。
ありがとう!、
DSRe: 円グラフ+ヒートマップ関心のある列を積み重ねて、カスタム マップを使用して、必要な視覚化を実現できます。
以下は、提供されたデータを使用した JMP パブリックの例です。
カスタム マップと変更されたデータ テーブルは次の場所にあります。
https://public.jmp.com/packages/5d5aa110f40f010268e63cf4
~ジョン
Re: 円グラフ+ヒートマップまだ迷っているので、実際のデータファイルを添付してみようと思います。 基本的に、最後の 5 つの列を円グラフに配置したいと考えています。この円グラフでは、くさびの色がセル内の色を反映しています (サンプル番号で囲まれています)。 これはグラフビルダーでは不可能かもしれないと思い始めています....
Re: 円グラフとヒートマップこんにちは 、
かなり遅れてこの議論に参加していますが、私も非常によく似たタイプの可視化を作成しようとしています。特に「3.b」の解決策に興味があります。というのも、ヨーロッパ全域を網羅するグリッド上に円グラフを表示したいからです(このシナリオではラベルスタイルが全く読み取れません)。
要点は、グラフをマーカーとして使用すると、背景が白になるため、地図上で見栄えが悪くなるということです。角の部分でグラフが重なり合ってしまう傾向があります。
円グラフのサイズを調整することで白い領域を小さくすることはできますが、白い背景は表示されたままです。JMP 17でこの背景を透明にしたり、完全に削除したりする方法はありますか?
ヨハンナ
Re: 円グラフとヒートマップこんにちは、 @johanna_younous さん。
会話へようこそ。
私がこの議論に参加し始めた当初は、グラフの背景も白でした。
前述のプレゼンテーションを行う頃には、背景を透明にする方法が分かっていました。
私は、グラフ画像の列名が「Graph」である画像テーブル内の白いピクセルを透明にするために、以下のJSLスクリプトを使用しました。
dt=CurrentDataTable();
For Each Row(
{r, g, b} = dt:Graph[] << getpixels( "rgb" );
a = !AND(r == g, g == b);
dt:Graph[] << setpixels( "rgba", {r, g, b, a} );
);
これにより、赤、緑、青の色の成分がすべて同じであるグレーのピクセルが透明になります。背景にもグレーの部分がありました。
これがあなたにとってうまくいくことを願っています。
~ジョン
Re: 円グラフとヒートマップ@John_Powell_JMP さん、ありがとうございます。
残念ながら、このループが完全に機能せず、原因が分からずに困っています。
ループ全体を実行しても、グラフの白い背景が削除されません。
);
dtgraph= Graphbuild<< Make Into Data Table( );
For( i=1, i <= nrows(dtgraph) , i++, //i=3
img =dtgraph:Graph[i] ;
{r, g, b} = img << getpixels( "rgb" );
// Pixel coloré → alpha = 1 (opaque)
// Pixel gris/blanc/noir (r==g==b) → alpha = 0 (transparent)
a = ! (r==g==b);
Wait(0);
img << setpixels("rgba", {r, g, b, a});
Wait(0);
dtgraph:Graph[i] = img;
);
しかし、この手順を一つずつ実行していくと、最初の行には正常に更新が適用されます!
img =dtgraph:Graph[1] ;
{r, g, b} = img << getpixels( "rgb" );
// Pixel coloré → alpha = 1 (opaque)
// Pixel gris/blanc/noir (r==g==b) → alpha = 0 (transparent)
a = ! (r==g==b);
Wait(0);
img << setpixels("rgba", {r, g, b, a});
Wait(0);
dtgraph:Graph[1] = img;
今のところ、これは本当に困っています。更新のタイミングの問題か、式タイプの列に関連する何かが原因かもしれません。
何かご意見があれば大変ありがたいです 
ヨハンナ
Re: 円グラフとヒートマップこの解決策(および他の多くの提案)は非常に革新的ですが、円グラフは全く役に立たないと言わざるを得ません(これは、タフティの言葉を思い出させます。彼がどこで言ったのか正確には覚えていないので言い換えますが、「愚かな円グラフが1つあるよりも悪いのは、愚かな円グラフが複数あることだ」)。いつものように、ドーナツグラフは円グラフよりも優れていますが、この場合は棒グラフの方がはるかに効果的だと思います。4つの次元にわたる複数の比較では、2つの問題があります。1つ目はピースの順序、2つ目はピースのサイズです。棒グラフは円のスライスよりも順序付けが簡単で、サイズも棒グラフに比べてはるかに優れています。さらに効果的な表示方法があるかもしれませんが、これらの円グラフは、私には全く理解しやすいとは思えません。
Re: 円グラフとヒートマップ一方、私は(この非常に最適とは言えないスクリプトからもわかるように、長い試行錯誤の末に)驚くべき方法でそれを動作させることができました。
dtgraph= Graphbuild<< Make Into Data Table( );
For( i=1, i <= nrows(dtgraph) , i++, //i=6;
img =dtgraph:Graph[i] ; //
img1=char(img);
{r, g, b,a1} = img << Get Pixels( "rgba" );
a2 = !AND(r == g, g == b);
Wait(0);
eval(parse( "img << set Pixels(\!"rgba\!", {r, g, b, a2})" ));
img2= char(img);
print(img1==img2);
Wait(0);
dtgraph:Graph[i] = parse(char(img2));
img=empty();
);
print("fin loop1");
//exact same loop !!
For( i=1, i <= nrows(dtgraph) , i++, //i=6;
img =dtgraph:Graph[i] ; //
img1=char(img);
{r, g, b,a1} = img << Get Pixels( "rgba" );
a2 = !AND(r == g, g == b);
Wait(0);
eval(parse( "img << set Pixels(\!"rgba\!", {r, g, b, a2})" ));
img2= char(img);
print(img1==img2);
Wait(0);
dtgraph:Graph[i] = parse(char(img2));
img=empty();
);
print("fin loop2");
// log output
1
1
1
1
1
1
"fin loop1"
0
0
0
0
0
0
"fin loop2"
本当に奇妙な挙動だけど、ちゃんと機能するから、それで十分だろう。この問題に時間をかけすぎたよ^^
この現象に関する説明があれば、ぜひ教えていただきたいです。
Re: 円グラフとヒートマップその点についてはあなたに同意しますが、私のステークホルダーからの要望は...円グラフ(さらに悪いことにレーダーチャート)です!
Re: 円グラフとヒートマップ@johanna_younous ,
解決策を見つけてコミュニティと共有してくださったことは素晴らしいと思いますが、おそらくもっとシンプルで効率的な解決策があるだろうという点には同意します。「For Each」ループは「For」ループよりも優れている点があるかもしれません。
Get Pixels関数で「rgba」を使用しているのを見て驚きましたが、おそらくスクリプトを一度実行した後、画像内のピクセルにアルファ成分が加わったのでしょう。
私がスクリプトを使用した環境では、画像は別のデータテーブルに格納され、仮想結合を使用してリンクされていました。これはあなたの環境とは異なる可能性があり、そのため私の環境では画像の変更が即座に反映されたのかもしれません。
もしかしたら、私よりもJMPスクリプトに関する専門知識を持つコミュニティメンバーが、より簡単な解決策や説明を提供してくれるかもしれません。
ありがとう、
~ジョン