Rで解析:ぐりぐり動く!3D ScatterPlotの作成「threejs」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

ぐりぐり動かすことができる3DのScatterPlot(散布図)を作成できる「threejs」パッケージを紹介します。散布図はデータの特徴を探るのに非常に有効な表現方法だと思います。

本パッケージ以外でも、インタラクティブな3DのScatterPlotを作成できますが、本パッケージは「画像を取り込み、画像ごとインタラクティブな球体図を手軽に作成できること」が特徴かと思います。

バージョンは0.3.3です。

面白いパッケージだと思います。ぜひ、試してみてください。

スポンサーリンク

パッケージのインストール

下記、コマンドを実行してください。

install.packages("threejs")

実行コマンドの紹介

詳細はコマンド内コメントならびにパッケージのヘルプを確認してください。
地球の画像を読み込み、パッケージ付属のフライトデータプロット(例1)とデータを擬似的に作成し3D散布図をプロット(例2)を紹介します。

#パッケージの読み込み
library("threejs")
par(family = "HiraKakuProN-W3")

#例1
#パッケージ付属データの読み込み
data(flights)

#付属データ座標の整形
dest <- factor(sprintf("&yen;%.2f:&yen;%.2f", flights[,3], flights[,4]))
#windows&#12391;&#12398;&#12467;&#12510;&#12531;&#12489;&#12399;&#12371;&#12385;&#12425;
#MAC&#12392;&#12399;&#12456;&#12473;&#12465;&#12540;&#12503;&#20966;&#29702;&#12364;&#30064;&#12394;&#12426;&#12414;&#12377;
dest <- factor(sprintf("\\%.2f:\\%.2f",flights[,3], flights[,4]))

#&#12487;&#12540;&#12479;&#12398;&#20006;&#12403;&#26367;&#12360;
freq <- sort(table(dest), decreasing = TRUE)

#TOP10&#12398;&#12495;&#12502;&#31354;&#28207;&#12434;&#25277;&#20986;
frequent_destinations <- names(freq)[1:10]
idx <- dest %in% frequent_destinations

#&#20986;&#30330;&#12392;&#21040;&#30528;&#12398;&#24231;&#27161;&#12434;&#21462;&#24471;
frequent_flights <- flights[idx, ]

#&#12487;&#12540;&#12479;&#12398;&#21336;&#19968;&#21270;
latlong <- unique(frequent_flights[,3:4])

#&#12487;&#12540;&#12479;&#12398;&#12503;&#12525;&#12483;&#12488;
#world&#12434;moon&#12395;&#12377;&#12427;&#12392;&#26376;&#12398;&#20889;&#30495;&#12364;&#20351;&#29992;&#12391;&#12365;&#12414;&#12377;&#12290;&#12497;&#12483;&#12465;&#12540;&#12472;&#12395;&#12399;Jupiter, mars&#12398;&#20889;&#30495;&#12364;&#20184;&#23646;&#12375;&#12390;&#12356;&#12414;&#12377;&#12290;
earth <- system.file("images/world.jpg", package = "threejs")
globejs(img = earth, lat = latlong[,1], long = latlong[,2], arcs = frequent_flights,
        arcsHeight = 0.3, arcsLwd = 2, arcsColor = "#ffff00", arcsOpacity = 0.15,
        atmosphere = TRUE)

#&#20363;2
#&#12487;&#12540;&#12479;&#20363;&#12398;&#20316;&#25104;
i <- sample(3, 50, replace = TRUE)
x <- matrix(rnorm(50*3),ncol=3)

#&#12503;&#12525;&#12483;&#12488;&#12521;&#12505;&#12523;&#12398;&#20316;&#25104;
lab <- c("small", "bigger", "biggest")

#&#12503;&#12525;&#12483;&#12488;
scatterplot3js(x, color = rainbow(50), labels = lab[i], size = i)

出力例

なお、一部のスマートフォンではインタラクティブには表示されません。パソコンで確認してください。なお、chromeで動作確認をしています。
参考1
クリックすると大きく表示されます。

参考2
クリックすると大きく表示されます。


少しでも、あなたのウェブや実験の解析が楽になりますように!!

タイトルとURLをコピーしました