こんにちは,@PKです.
KNIMEには様々な可視化用のノードがあることを紹介してきました.
www.t-kahi.com
特にJava scriptで構築されているinteractive nodeは,デフォルトのノードと比べても非常に便利で,可視化したデータを選択して次のノードに流せるのは本当に素晴らしいです.
JavaScript Box Plot Examples – KNIME Community Workflow Hub
ただ,単純な可視化だけの場合はどのノードを使えばいいのか,ということで,
今回は箱ひげ図を「Conditional box plot」 と「R view」ノードを使って作成して比較しました.
「R Source」でサンプルデータの作成
使用するデータは「R source」で作成しました.
「R source」で作成すると,他の方も簡単に参照できるので,こっちのほうがいいのでは…と最近感じています.
KNIMEでどうやってRを動かすの?という方は下記を参照ください.
【KNIME】Tukeyの多重検定を「R node」で処理・可視化する - t_kahi’s blog
#R source a1<- c(63,58,64,58,77,66,52,64,49,66) a2<- c(64,64,68,61,56,71,64,65,85,75) a3<- c(59,87,79,71,65,65,65,71,74,58) a4<- c(83,79,65,67,80,72,80,75,72,84) data<- data.frame(A=factor(c(rep("a1",10),rep("a2",10),rep("a3",10),rep("a4",10))),y=c(a1,a2,a3,a4)) knime.out <- data
出力されたデータは以下の通りで,A列に各条件a1~a4,y列に各条件の時の結果が記載されています.
> data A y 1 a1 63 2 a1 58 3 a1 64 4 a1 58 5 a1 77 6 a1 66 7 a1 52 8 a1 64 9 a1 49 10 a1 66 11 a2 64 12 a2 64 13 a2 68 14 a2 61 15 a2 56 16 a2 71 17 a2 64 18 a2 65 19 a2 85 20 a2 75 21 a3 59 22 a3 87 23 a3 79 24 a3 71 25 a3 65 26 a3 65 27 a3 65 28 a3 71 29 a3 74 30 a3 58 31 a4 83 32 a4 79 33 a4 65 34 a4 67 35 a4 80 36 a4 72 37 a4 80 38 a4 75 39 a4 72 40 a4 84
「Conditional box plot」ノードで箱ひげ図を作成する
「Conditional box plot」の設定画面で,カテゴリーカラムを「A」列,可視化する列を「y」列と設定します.
また,[general plot options]でタイトルや画像の幅なども自由に設定することができます.
実行するとこんな感じの箱ひげ図を描くことができます.
KNIMEのデフォルトの箱ひげ図と比べると全然きれいですし,十分使えるレベルのきれいな図示ができています.
お手軽に箱ひげ図を描くなら「Conditional box plot」ノードで充分です.
「R view」ノードで箱ひげ図を作成する
本題です.結論は「ggplot2すごい」でした(何を今更…).
自分のようにggplot2??という方は,下記のサイトがめちゃめちゃわかりやすいので,参考にしてください.
ggplot2による可視化入門
ggplot2のチートシートも便利ですね…!
https://www.rstudio.com/wp-content/uploads/2016/10/ggplot2-cheatsheet-2.0-ja.pdf
文字の大きさ変えたいな,と思ったので下記も参考にしました.
ggplot2で論文用の図を作るときに使いたいオプション(点のshape、色、軸の文字の大きさ、色、エラーバー、背景) - Qiita
実際の「R view」ノードのスクリプトがこちらです.
#R view library(ggplot2) ggplot(knime.in, aes(x = A, y = y, color = A)) + #初期設定 geom_boxplot() + #boxplotを指定 geom_jitter() + #分布を重ねる labs(x = "group", y = "results") + #データのラベルを付ける theme(axis.text=element_text(size=12), axis.title=element_text(size=14,face="bold")) #データの文字サイズを変える
そして実行した結果がこちら.
すごい!きれいな箱ひげ図!
諸先輩方が「ggplot2はいいぞ」という理由がようやくわかった…
まとめ
- とりあえずデータを可視化する or interactive重視⇒「Conditional box plot」
- きれいにデータ可視化がしたい ⇒ 「R view」
という結論になりました.
自分も含めてCUIよりGUIのほうが向いていると使いやすいと感じているからKNIMEを使っていると思います.
全部をRやpythonで書くのは難しいですが,スポット的にプログラムを使うのは結構できるのではというのが,最近の印象です.