ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Rで作成したグラフをHTML+Javascriptで書き出し(東電からデータ読み込み例で)

2014-03-30 22:31:34 | AI・BigData
AITCオープンラボ
「R言語で始めよう、データサイエンス(ハンズオン勉強会)
〜機械学習・データビジュアライゼーション事始め〜」
に行ってきた!その内容のうち、(順番違うけど)Javascript連携をメモメモ
(基礎、機械学習、ビジュアライゼーション、Javascript連携と話は続く)

なお、この講義は

http://www.slideshare.net/yasuyukisugai/r-charts

の内容に沿って行われました。
(ソースプログラムはそのサイトより引用)



・rで処理したデータをJavascriptライブラリを利用して可視化、
・HTML5を作成




■HighchartsでRのグラフ→Javascriptへ

Highchartsなどサポート(ただし、Javascriptのライセンスに注意)
以下、ふつうのR(R Studioでなく)で行う


install.packages("devtools")
require(devtools)
install_github("rCharts","ramnathv")
require(rCharts)

#HighChartsでみてみる
p<-hPlot(Petal.Length~Petal.Width,data=iris,type="scatter",group="Species")
p$chart(zoomType="xy")
p$exporting(enable=T)
p

これを実行すると、ブラウザが開き、グラフが表示される。

これを、「名前をつけて保存」すると・・・

Javascriptで書き出される。




■NvD3でRのグラフ→Javascriptへ
nPlot(Petal.Length~Petal.Width,data=iris,type="scatterChart",group="Species")

を実行する。IEだと、エラーになるので、その場合は、
(その場合でなくても)ファイルに保存して、Chromeでみると
わかる




■どちらがいい?

ソースを開いてみると、Highchartsは、グラフ表示に必要な
データしか書き出さないが、NvD3はデータを全部書く。
そこで、あとでJavascriptで操作する場合は、
NvD3のほうが、やりやすい




■サンプル-東京電力

#データを読んで加工
tmp<-readLines("http://www.tepco.co.jp/forecast/html/images/juyo-2013.csv")
electric<-read.csv(textConnection(tmp),header=F,skip=3)
names(electric)<-c("date","time","value")
electric<-transform(electric,date=as.Date(date))

#ピークを取得
electric2<-aggregate(electric$value,list(electric$date),max)
names(electric2)<-c("date","value")

#グラフ化
p<-nPlot(value~date,data=electric2,type="lineWithFocusChart")
#軸の日付
p$xAxis(tickFormat="#!function(d){
return d3.time.format('%m/%d')(new Date(d*86400000));
}!#")
p$x2Axis(tickFormat="#!function(d){
return d3.time.format('%b')(new Date(d*86400000));
}!#")
#ツールチップの日付
p$chart(tooltipContent="#!function(key,x,y,e,graph){
return 'date;'+d3.time.format('%Y/%m/%d')(new Date(e.point.date*86400000));
}!#")
#幅、高さ設定
p$set(width=1000,height=500)
#表示
p

すると、こう表示され

下で一部を選択すると、その部分が表示される




■その他

しゃいにーShiny
(サーバーをたてて、サーバーサイドでR)
一般の人にはrChart

seekr.jp
r-bloggers.com
バッチ的に使える
rChartでつくったものをGitHubに置くっていう手もある
rMarkDown

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ポアンカレとパン屋さんをRで再現

2014-03-30 20:14:07 | AI・BigData

AITCオープンラボ
「R言語で始めよう、データサイエンス(ハンズオン勉強会)
〜機械学習・データビジュアライゼーション事始め〜」
に行ってきた!その内容のうち、Rの基礎部分をメモメモ
(基礎、機械学習、ビジュアライゼーション、Javascript連携と話は続く)




R:無料で使える統計ソフト
特徴
・ライブラリ豊富
・すくないコード量で処理できる
・可視化
その他:SPSS,SAS→結構な金額

Excel:結構できる(アドインの「分析ツール」)
R-Studio
いくつかのパネル
・データView
・ソースEdit
・コマンドライン(コードアシストつき)
・グラフ
・履歴

Rの基礎
代入は<-
配列みたいにデータ
データフレーム

?iris  説明みえる
str(iris)
View(iris)
iris

データフレーム
・名前つきの行と列
iris[,2]
iris[3,2]
iris[3,2]
iris$Sepal.Width
mean(iris$Sepal.Width)
summary(iris$Sepal.Width)
sd(iris$Sepal.Width)

プロットする
plot(iris)
xyに総当りで配置
plot(x=iris$Petal.Length,y=iris$Petal.Width,col=iris$Species)
(色をつける:凡例はつかない)

ヒストグラム
hist(x=iris$Petal.Length)

ポアンカレさん
1Kgと売っている→平均950g、偏差50g
これをRで表現
rn<-rnorm(365,mean=950,sd=50)
hist(rn)

カーブをかくには
hist(rn, breaks=seq(700, 1200, 10), freq=FALSE)
curve(dnorm(x, mean=950, sd=50),700, 1200,add=TRUE)

ポアンカレさん PART2
1Kgになった。でも、非対称
→また訴えた:重いものを渡していたから

勉強会の題材:Think Stats

・ポアンカレさんの再現
 rnorm(n,mean=950,sd=50)
  →nこ発生
 そこから最大値
 その最大値を365個

・そうすると・・・ 
  標準偏差が変わる
  線形が対象にならない

2013年12月号のニュートンにもポアンカレさんの話

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする