韜晦日記

韜晦日記

Rietveldよりもプログラミングメインになりつつある

Rietveld解析初心者による備忘録とつぶやき

カラーマップ付きの散布図を作成するマクロを作った。

どうも。年末にかけて清く正しい生活を、と思い
「絶対12時に寝て朝7時には起きる」
をそこそこ守っていましたが、やってしまいました。

今は丑三つ時。幽霊なんかより自堕落な自分が、恐ろしい。

題名のようにカラーマップ付き散布図を作成するマクロを作成しました。
私の研究で、析出物の組成分析の結果が母相に影響を受けていないか。
と気になって夜も眠れない状況でありました。
SEMで組成分析し、軽い座標変換の後に三元系状態図にプロットするまではよかったんですが、カラーマップ化がどうやらExeclの標準機能ではできません。
じゃあ、gnuplotで書こうかな。なんて思っていましたが、わざわざgnuplotでやるのも面倒です。
しかたない。Excelのアドインとして使えるようにしてやろうではないか。

Scatter3Dplot

はい。作りました。

ダウンロードは自由です。

これがその結果です。

f:id:tanisuke_str:20171227023900j:plain

実行結果。左の粒径に依存したカラースケールが状態図(散布図)に上手く対応している。

散布図のマーカーの色が粒径に依存して変化します。
このグラフを見ると、組成に依存して粒径が変化していることが明らかっぽいです。
もっと言えば、SEMのプローブ径が粒径より大きい可能性が示唆されています。

使い方

そもそもこのカラーマップはセルの背景色から取得するように設計しています。Excel条件付き書式にあるカラーマップと連携する為です。


実行するときは対象となるグラフをクリック(アクティブに)した状態で実行してください。

すると以下の様な画面が現れます。これに散布図のデータ範囲を入力します。
上記の例では、カラーマップが2列目, 系列の名前が3列目, X軸が7列目, Y軸(セルにはイットリウムのYと混同ないようにZと書いてます。)が8列目, 最初の行が28行目, 最後の行が47行なので以下のように入力し実行します。

Excelのデフォルトは列がABC並んでいますが、数字で入力してください。

A⇒1, B⇒2, C⇒3.....て感じで。

f:id:tanisuke_str:20171227024050j:plain

入力画面; 列は数字で入力してください。



これで終わりです。一瞬でプロットされます。
わーいくそ簡単。プログラム作るのに2時間ちょっとかかってるけど…
ね?効率的になったでしょ?

じゃあ、セルの色はどうやって作るんだよ!!って方は下へスクロールしてね。

カラースケールの導入

ご存知かもしれませんが、Excelには条件付き書式設定という便利すぎる機能があります。
これを使うのです。
ここに、粒径の大きさが掛かれたデータが有ります。

f:id:tanisuke_str:20171227025237j:plain


この粒径のところを選択し、ホーム>条件付き書式をクリック

f:id:tanisuke_str:20171227030539j:plain


条件付き書式>カラースケールを選択し、好きなやつに設定する。
赤、黄、緑のカラースケールがいいと思う。
こうなる。⇓

f:id:tanisuke_str:20171227030746j:plain
でも、このままでは使えないんだな。実は、条件付き書式なのでセルの背景に色は付いていない。付いているように見えるけど、付いていないのだ。
調べても、セルに色として固定できない。仕方ないので打開案を考えた。

Wordに一回貼り付けてまたExcelに戻せばオッケイ。

それだけ。これでカラーマップの情報は作成できました。めでたし。

f:id:tanisuke_str:20171227032405j:plain

左がWordに貼り付けたときの。右の右側がExcelに戻したときの。
見た目は変わっていないけど、セルの背景色を見てみればセルに色がちゃんと付いていることが分かる。



アドインの導入の仕方。

このマクロはアドインとしてExcelに導入することで使用できます。

Scatter3Dplot1.xlamをダウンロードし、Excelを新しく起動。

Excelのタブにある開発>アドイン>参照

とクリックしていき、Scatter3Dplot1.xlamのファイルを選択する。

※開発タブが見当たらない場合はオプション>リボンのユーザー設定>画面右側の開発にチェックを入れる。下の画像のように。

これが分からなければ諦めよう。他のサイトみて調べて見てください。

f:id:tanisuke_str:20171227033645j:plain

 

とまあ、こんな感じでアドインは導入されました。めでたし。

。。。とはいかない。アドインとして導入しても実行する場所が見当たらない。

実行用リボンの作成

実行するためには専用にリボンを作成しないといけないようです。

f:id:tanisuke_str:20171227034344j:plain

f:id:tanisuke_str:20171227034717p:plain

 

とまあ、こんな感じです。

ソースコード

一応貼っておきます。

ユーザーフォーム側のは貼らないですが、大したことはしてないのであまり関係ないです。

取りあえず急ぎで作ったので、例外処理等適当ですが。

 

KeiProTKG

gist6910e6d37e3b7f8e5f8dd96227312ea2

 

以上です。