Rはaptコマンドによりインストールされているものとします。
R上でinstall.packages関数によりrlgパッケージをインストールしようとしても、次のように「X11が見つからない」とエラーが出てインストールできません。
install.packages('rgl')
configure: error: X11 not found but required, configure aborted.
ERROR: configuration failed for package ‘rgl’
rglパッケージのインストール
Rのバージョンが3.5
Rのバージョンが3.5の場合、aptコマンドによりrglをインストールすることはできません。
これは、Rのバージョン3.5をインストールするときに、/etc/apt/source.listに登録したurlにrglがないためです。
RのミラーサイトThe Comprehensive R Archive Networkから、R Binaries→linux→ubuntu→bionic-cran35をたどると確かにrglパッケージがないことが確認できます。
例えば、Ubuntu18.04のターミナル(端末)上でaptコマンドによりrglパッケージをインストールしようとすると次のように表示されます。
これは、Rのバージョンは3.5だが、r-cran-rglはRのバージョンが3.4に対応しているもののため、インストールできないということになります。
sudo apt install r-cran-rgl
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:
以下のパッケージには満たせない依存関係があります:
r-cran-rgl : 依存: r-api-3.4
依存: r-cran-htmlwidgets しかし、インストールされようとしていません
依存: r-cran-htmltools しかし、インストールされようとしていません
依存: r-cran-knitr しかし、インストールされようとしていません
依存: r-cran-jsonlite しかし、インストールされようとしていません
依存: r-cran-shiny しかし、インストールされようとしていません
依存: r-cran-magrittr しかし、インストールされようとしていません
依存: r-cran-crosstalk しかし、インストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。
このとき、rglパッケージをインストールする方法は、事前に各種依存ライブラリをターミナル(端末)上でインストールした後、R上でinstall.packages(“rgl”)を実行します。
まずは、ターミナル(端末)上で次のコマンド実行します。
sudo apt install xorg libx11-dev libglu1-mesa-dev libfreetype6-dev
次にR上で次のコマンドを実行します。
install.packages("rgl")
Rのバージョンが3.4の場合
最も簡単にrglパッケージをインストールする方法は、ターミナル(端末)上で、次のようにaptコマンドからインストールすることです。
各種依存ライブラリのインストールを考える必要がないため、圧倒的に簡単に済みます。
sudo apt-get install r-cran-rgl
検証
rglパッケージがインストールできたところで、実際に少し触ってみます。
サンプルデータとして、Rに標準で付属しているOrchardSprays(オーチャードスプレーの効力)を用いました。
これは、ラテン方格法を使用して、ミツバチを退ける果樹園のスプレーの様々な成分の効力を評価するために実施した実験結果で、次のようなデータフレームとなっています。
詳しい内容は「help(OrchardSprays)」を実行して参照して下さい。
str(OrchardSprays)
'data.frame': 64 obs. of 4 variables:
$ decrease : num 57 95 8 69 92 90 15 2 84 6 ...
$ rowpos : num 1 2 3 4 5 6 7 8 1 2 ...
$ colpos : num 1 1 1 1 1 1 1 1 2 2 ...
$ treatment: Factor w/ 8 levels "A","B","C","D",..: 4 5 2 8 7 6 3 1 3 2 ...
実際に、プロットしてみます。
# rglパッケージの読み込み
library(rgl)
plot3d(
x = OrchardSprays$colpos,
y = OrchardSprays$rowpos,
z = OrchardSprays$decrease,
col = rainbow(7)[OrchardSprays$treatment],
size = 5
)
別ウィンドウが開いて、次のような画面が表示されます。
マウスで適当に動かして、視点をずらすことができます。
プロットされた3次元グラフィックを保存する場合は、別ウィンドウが開いた状態で、R上に次のコマンドを実行すれば保存されます。
rgl.snapshot('sample-1.png')
gifアニメーションとして保存する場合は、あらかじめUbuntuのターミナル上で、imagemagickをインストールしてきます。
sudo apt-get isntall imagemagick
Rでのコマンドは次のようになります。
# ウィンドウ起動
open3d()
# ウィンドウにプロット
plot3d(
x = OrchardSprays$colpos,
y = OrchardSprays$rowpos,
z = OrchardSprays$decrease,
col = rainbow(7)[OrchardSprays$treatment],
size = 5
)
# プロットしたものを動かす
M <- par3d("userMatrix") > if (!rgl.useNULL())
play3d(
par3dinterp(
userMatrix = list(M,
rotate3d(M, pi/2, 1, 0, 0),
rotate3d(M, pi/2, 0, 1, 0) ) ),
duration=3)
# gifアニメーションとして保存
movie3d(spin3d(), duration=10, movie='sample-2')