2012年11月11日日曜日

R による大量データの散布図:あるいは iplots for mac

要約:R で大量データの散布図を描くとき、普通に plot を使うと点が重なりあってなんだかよくわからないことになるかもしれない。そういう場合は iplots パッケージとか使って透明度をあげたりすればいい。

 iplots で
とりあえず winows ユーザーの方はRコンソールをたちあげて

x <- rnorm(10000)
y <- rnorm(10000)
install.packages("iplots")
library(iplots)
iplot(x, y)
と入力してみてください。 矢印キーで操作できます。

mac で library(iplots) とやると、

> library(iplots)
 要求されたパッケージ rJava をロード中です
Note: On Mac OS X we strongly recommend using iplots from within JGR.
Proceed at your own risk as iplots cannot resolve potential ev.loop deadlocks.
'Yes' is assumed for all dialogs as they cannot be shown without a deadlock,
also ievent.wait() is disabled.
Error :  .onLoadはloadNamespace()(iplotsに対する)の中で失敗しました、詳細は:
 call: .jnew("org/rosuda/iplots/Framework")
 error: java.lang.InternalError: Can't start the AWT because Java was started on the first
thread.  Make sure StartOnFirstThread is not specified in your application's Info.plist or on the command line
 エラー:  '‘iplots’' に対するパッケージもしくは名前空間のロードが失敗しました
というエラーが出る。しかし JGR をインストールすれば mac でも動く。

JGRのコンソール

その他の方法
hexbin パッケージではこんなこともできる

install.packages("hexbin")
library(hexbin)
x <- rnorm(10000)
y <- rnorm(10000)
bin<-hexbin(x, y, xbins=50)
plot(bin, main="Hexagonal Binning")
「それほど大量のデータではないが重なりがある」みたいな場合は、jitter 関数でノイズを加えて点の座標をずらしてやればいい。
x <- rep(1:3,3)
y <- rep(1:3,3)
par(mfrow=c(1,2))
plot(x, y)
plot(jitter(x,0.1), jitter(y,0.1))

リンク集

Y先生、並びにK先生に感謝いたします。ありがとうございました。
https://twitter.com/yoshiroy/status/250231399150395392

0 件のコメント:

コメントを投稿