Ubuntu上のRで、OpenGLを用いた3次元可視化パッケージであるrglをインストールする方法をいくつかのパターンに分けてお伝します。
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')

sample-1

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')

sample-2

関連する記事

  • Ubuntu,R gmpパッケージをインストールする方法Ubuntu,R gmpパッケージをインストールする方法 UbuntuにRパッケージのgmpをインストールする方法を備忘録として残しておきます。 CライブラリGMP(GNU Multiple Precision […]
  • Ubutnu,R topicmodelsパッケージのインストールの方法Ubutnu,R topicmodelsパッケージのインストールの方法 Ubuntu14.04上のRで「topicmodels」をインストールする方法をお伝えする。 R上で、install.package("topicmodels")を実行すると、次のようなエラーが出てイントールできない。 > install.packages("topicmodels") ctm.c:29:25: fatal error: […]
  • R 関数に時間制限を設ける方法 ある処理にとても時間が掛かるため、一定時間経過後はその処理を途中で打ち切りたいときがある。 例えば、for文で、あるループだけが重いため全体として時間が掛かってしまう場合、その処理を一旦スキップしてfor文の先に処理を進めたい、などである。 ここでは、そのひとつの解決策として、関数に時間制限を設けて、一定時間経過後はその関数を強制終了するコードをご紹介する。 ただし […]
  • R データフレームから特定の型の列を抽出する方法R データフレームから特定の型の列を抽出する方法 Rのデータフレームから特定の型の列を抽出する方法をお伝えします。 サンプルデータとして、irisを用います。 データフレームの構造をstr関数で確認します。 > str(iris) 'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 […]
  • R,knitPDF bxjsarticleを用いた際にサブタイトルでエラーが出る場合の対処法 RStudioを用いてRmdファイルから日本語PDFを作成する際に、ドキュメントクラスをbxjsarticleと設定すると、次のようなエラーが出てPDFファイルが作成されない。 エラーは、subtitleコマンドが二重に定義されているために起こっているようだ。 ! LaTeX Error: Command \subtitle already defined. Or […]
Ubuntu,R OpenGLを用いた3次元可視化パッケージrglのインストール方法