How can you show the RGB color coordinates of crayons in an interesting way using JMP? (Image copyright James A. Alloway, Jr. Used with permission.)How can you show the RGB color coordinates of crayons in an interesting way using JMP? (Image copyright James A. Alloway, Jr. Used with permission.)How can you show the RGB color coordinates of crayons in an interesting way using JMP? (Image copyright James A. Alloway, Jr. Used with permission.)How can you show the RGB color coordinates of crayons in an interesting way using JMP? (Image copyright James A. Alloway, Jr. Used with permission.)JMP を使用してクレヨンの RGB カラー座標を興味深い方法で表示するにはどうすればよいでしょうか? (画像の著作権は James A.Alloway, Jr. 許可を得て使用しています。)
エンジニアリングメールバッグ
エピソード 2: あなたの本当の色が見えます
JMP システム エンジニアは、一般的な範囲から多少外れる興味深い質問に遭遇することがあります。 JMP使用法。 これらのアプリケーションは一般に賢く、データの使用がビジネス上または技術的な問題のためだけではないことを思い出させます。 以下は、ニューヨーク州の別の同僚からの例で、共有すると楽しいと思います。
ジムはボランティア活動の一環として、150 個の Crayola クレヨンのデータを分析しようとしていました。 彼は、STEAM (科学、テクノロジー、エンジニアリング、アートとデザイン、数学) への興味を刺激するクールなデータ ビジュアライゼーションを学生たちに見せたいと考えていました。
質問
こんにちは、マイク[JMP]、
最後に質問があります。 STEAMプレゼンテーション用のデータセットを作成しています。 アートとデザインの部分には、Crayola クレヨン (150 行) のデータがあります。 各行(色)にある色座標(R、G、B)を使用して三値プロットを作成しようとしています。 プロットは問題なく作成できますが、プロット上の各マーカーを各行で表される実際の色にしたいと考えています。 私はこれを手動で行うことができましたが、(スクリプトを書かずに) もっと簡単な方法があるはずだと思います。
この方向でのガイダンスをいただければ幸いです。 (この時点では急ぐ必要はありません。)
ありがとう。
ジム[ユーザー]
私の反応
これを試してみてください。<添付データテーブル>
そうですね…有益な情報交換でしたね?
これは、誰かに見せる唯一の方法であるまれなケースの 1 つの例です。どうやって何かをするということは実際にやるそれは彼らのためです。 私は通常、これを行うのが好きではありませんが、場合によってはそれが最善の方法です。 はい、この場合、答えはスクリプトです。 少し時間をとって、データと私が行ったことを見てみましょう。 Jim が提供したデータ (入手可能)ここ)は次のようになります。
Jim's original data tableJim's original data tableJim's original data tableJim's original data tableJim のオリジナル データ テーブル
表示されるのは、クレヨン名の列とその色の HSV RGB 座標です。 実際には、ソリューションに HSV 座標を使用しませんでした。 ジムは、行の状態にプログラムで色を割り当てる方法を見つけたいと考えています。 RGB 座標で表される色と一致します。 。 (複雑に聞こえるかもしれませんが、ちょっと待ってください。それほど悪いことではありません。) 私が送り返したデータ テーブルは次のとおりです。
My data tableMy data tableMy data tableMy data table私のデータテーブル
私が含めたテーブル スクリプト (左側の緑色の矢印の横) に注目してください。 最初の場所は魔法が起こる場所です。 その他の興味深い分析については、後ほど説明します。
さて、くすぐってピンク!
まずはこのカラーリング事業について見ていきましょう。 やろうとしていることに応じて、 JMP RGB 座標を別の形式にする必要があります。 セルの色 (列の色の名前の背景) と行の状態の色を操作するには、RGB を 0 から 1 の間でスケールする必要があります。 そこで、自分がやっていることを透過的にしようとしたため、RGB 座標を 8 ビット カラー スケール (0 ~ 255) から 0 ~ 1 の間に再スケールするための列のセット (赤、緑、青) を作成しました。 。 次に、テーブル スクリプト「カラー セル」は 2 つのことを実行します。 まず、次を使用して各行を調べます。各行について()ループと:Color名前 << カラーセル()セルの色を設定するメッセージ。 次に、再び透明性を高めるために (おそらく、これを数日間かけて行ったので、正直に言うとどれだったか思い出せません)、次のステップを使用しました。ために()作成した列を使用して行の状態を設定するループ。
Names Default To Here( 1 );
dt = Current Data Table();
dt << Clear Select;
For Each Row(
// get RGB values
red = Column( "Red" )[Row()];
green = Column( "Green" )[Row()];
blue = Column( "Blue" )[Row()];
// color the "sample" column cell with the sample color
:Color Name << Color Cells( RGB Color( red, green, blue ), Row() );
);
For( i = 1, i <= N Rows(), i++,
// get RGB values
red = Column( "Red" )[i];
green = Column( "Green" )[i];
blue = Column( "Blue" )[i];
dt << Select Rows( i );
dt << Colors( RGB Color( red, green, blue ) );
dt << Clear Select;
);
このスクリプトを実行すると、ジムに送り返したカラフルなテーブルが作成されます。
このテーブルは非常にカラフルですが、この種のデータを使用するには、いくつかの強力な視覚化が必要になります。 RGB は 3 値の座標空間であるため、3 値プロットが適切な開始点のように見えます。
A Ternary Plot is a good place to start.A Ternary Plot is a good place to start.A Ternary Plot is a good place to start.A Ternary Plot is a good place to start.三項プロットから始めるのが良いでしょう。
行の状態の色分けにより、各クレヨンが RGB 色空間のどこに位置するかを明確に把握できます。 少し問題があることも指摘しておきます。買い手責任負担このアプリケーションでの三値プロットの使用について。 厳密に言えば、Ternary Plot プラットフォームは、各座標に指定された 3 つの値の合計が 1 になることを期待します。 提供されたデータがこの基準を満たさない場合、満たすようにデータ ポイントが正規化されます。 したがって、Ternary Plot は非常にきれいですが、色空間を 100% 正確に表現しているわけではありません。 ただし、演習の目的は STEAM の興味をそそるようなグラフィックを作成することであったため、視覚的なインパクトを犠牲にして多少の精度を犠牲にしても問題ないと思います…
分析的には、階層クラスタリングを使用して、色の類似度に基づいてクレヨンをグループ化することができます。 ここで、私が示したのは、コンスタレーションプロットこれは、RGB 空間座標で階層的クラスタリングを実行して、樹状図を観察する私のお気に入りの方法です。
A Constellation Plot produced by performing Hierarchical Clustering on the data.A Constellation Plot produced by performing Hierarchical Clustering on the data.A Constellation Plot produced by performing Hierarchical Clustering on the data.A Constellation Plot produced by performing Hierarchical Clustering on the data.データに対して階層的クラスタリングを実行することによって作成されたコンスタレーション プロット。
このことから、色のグループは 5 ~ 7 個あることがわかります。 クラスターの数を 5 に設定し、並列プロットを確認しました。 クラスター内の類似点と同様に、クラスター内の違いも簡単にわかります。 パステル カラーと昼光色がそれぞれ独自のクラスター (クラスター 2 と 3) に入れられているのが興味深いと思いました。
The pastel and day-glow colors were put into their own clusters (clusters 2 and 3).The pastel and day-glow colors were put into their own clusters (clusters 2 and 3).The pastel and day-glow colors were put into their own clusters (clusters 2 and 3).The pastel and day-glow colors were put into their own clusters (clusters 2 and 3).パステル カラーと昼光色は、それぞれ独自のクラスター (クラスター 2 および 3) に入れられました。
K-Means クラスタリング スクリプトでも同様の結果が得られます。
追記
いつものように、何かをしばらく置いてからもう一度見ると、新しい視点が得られます。 ジムが最初に連絡を取って以来、私はこのデータセットを何度か再訪しました。 何と言えばいい? 私はオタクなので、遊ぶのに楽しい小さなデータセットです。 まず、この投稿を書いている過程で、このコードを必要以上に複雑にしてしまったことに気づきました。 着色操作全体を 1 回の操作で実行できます。各行について()ループ。 また、新しい列を作成せずにリストを作成し、そのリストを変換して JMP が必要とする座標セットを取得することで、コーディングを簡素化することもできます。
Names Default To Here( 1 );
dt = Current Data Table();
dt << Clear Select;
For Each Row(
// get RGB values
r = Column( "R" )[Row()];
g = Column( "G" )[Row()];
b = Column( "B" )[Row()];
rowVal = {r, g, b};
// create a scaled set of colors
rowValS = rowVal/255;
// color the "sample" column cell with the sample color
:Color Name << Color Cells( RGB Color( rowValS ), Row() );
// apply a row state to each row
dt << Select Rows( Row() );
dt << Colors( RGB Color( rowValS ) );
dt << Clear Select;
);
次に、Jim のオリジナル データセットからの Ternary Plot がとても気に入りました (精度の問題は別として)。 それをきっかけに、RGB 空間内のすべての組み合わせをマッピングする空間充填サンプルを生成したらどうなるかについて考えてみました。 私が思いついたスクリプトはかなり複雑です。 ファイル交換に次のようにアップロードしましたRGB色空間マッピング見てみたい場合は。 とにかく…それが生成する Ternary Plot は非常に印象的です。 今にして思えば、この投稿のタイトルを「Dark Side of the Moon」にするべきだったかもしれません。
This is what happened when I generated a space-filling example that mapped out all the combinations in the RGB space.This is what happened when I generated a space-filling example that mapped out all the combinations in the RGB space.This is what happened when I generated a space-filling example that mapped out all the combinations in the RGB space.This is what happened when I generated a space-filling example that mapped out all the combinations in the RGB space.これは、RGB 空間内のすべての組み合わせをマッピングする空間充填サンプルを生成したときに起こったことです。編集者注:読んだことがありますかエンジニアリングメールバッグシリーズの第一弾? を使用していたユーザーをマイクがどのように支援したかをご覧ください。 JMP除雪サービスを申し込むかどうかを決める。
著者からのメモ
これをもう一度読んでいる人のために、いいえ、あなたは頭がおかしいわけではありません。タイトルは少し変わりました。検索エンジンで見つけやすいようにタイトルを更新してほしいというリクエストを受けました。これは、一部の検索エンジンが、ユーモアのセンスのない 19 世紀の参考図書館員の現代版であるためだと推測するほかありません。ご不便をおかけして申し訳ございません。-M