プログラミング

Rとplotlyで積み重ね棒グラフのプロットを作る

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_e169b2f3-c6d6-4001-8198-f46d7b27e7b6.png

実を言いますと、R言語は僕がプログラミングはじめたてのころ、3番目に手をつけた言語だったりします。最初がRuby、そしてAutohotkey、そしてなぜかRをはじめました。この話は今回の記事と特に関係はありません。

そして最近、ラズパイをはじめたり、Chromeの検索履歴のデータベースをいじったり、タイムマネジメントツールを作ったりなど、ログデータやSQliteをいじる機会が多くなってきました。
それらを解析するのにPythonでやってもいいかなと思っていたのですが、Rの方がいいらしいという話をきいて、とりあえずやってみることにしたところです。

ということで、インストールからはじめます。
以下からRStudio 1.2.1335 - Windows 7+ (64-bit)をダウンロードし、インストールします。

Download RStudio – RStudio

なぜubuntuではなくWindowsへのインストールなのか、という疑問は以下記事を見ていただければ理解してもらえるかと思います。

[RをBashでインタラクティブに使用したかったが挫折した件]

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_fc1464ba-9ce0-4359-848c-77ddf710abd5.png

インストールが終わりましたら、rstudio.exeを管理者権限で開きます。

管理者権限でないプロセスですと、install.packages()で外部パッケージのインストールが正常にできません。以下のようなエラーが出ます。

Error in install.packages : unable to create ‘C:/Users/OneDrive/??????/R/win-library/3.6’

r – Make a file writable in order to add new packages – Stack Overflow
Unable to update R packages in default library on Windows 7 – Stack Overflow

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_361847e0-d895-4d0e-acdb-64618979adf7.png

管理者権限で実行ファイルを開いたら、install.packages("plotly")を実行してplotlyをインストールしてやります。

ファイル上で操作する場合は、install.packages("plotly")の部分を選択した状態でctrl-Enterで実行します。

しましたら、以下スクリプトをコピペして実行してやります。


library(plotly) Animals <- c("giraffes", "orangutans", "monkeys") SF_Zoo <- c(20, 14, 23) LA_Zoo <- c(12, 18, 29) data <- data.frame(Animals, SF_Zoo, LA_Zoo) p <- plot_ly(data, x = ~Animals, y = ~SF_Zoo, type = 'bar', name = 'SF Zoo') %>% add_trace(y = ~LA_Zoo, name = 'LA Zoo') %>% layout(yaxis = list(title = 'Count'), barmode = 'stack') p

上記スクリプトはBar Charts in R | Examples | Plotlyからのコピーです。なんでこんな二番煎じの記事を書いたんだよ、と責めたくなる気持ちもわかりますが、その前に、よーくこちらのページと上記スクリプトを見比べてみてください。

……

最後のpが抜けているので、グラフは表示されないのですね。R初心者的にはきついね。おそらく、グラフを表示するpをしてしまうとその後のAPI云々が実行されないで止まってしまうんではないかと思います。コメントでここでpしてグラフを表示できるよーって書いておいてくれればいいのにね。あやうく勘違いしてAPI作りそうなところでした。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_45f53d19-80e3-4de7-88ad-c513d8b19201.png

一応証拠。