以前よりRを利用してデータのグラフ化を行っていました。僕はMicrosoftのOffice製品を持っていないので、Excelがあれば簡単に作れてしまうようなグラフでも、何か他の方法で行わなければなりません。Microsoft Officeは持っていませんが、LibreOfficeなら利用しているので、Calcを使えばExcelと同様なグラフは描けそうです。しかしExcelやCalcのようなWYSIWYG的アプローチは、ちょっと試してみる程度なら簡単で便利ですが、定期的に同じような作業を繰り返す場合には、かえって手間がかかると思っています。
そこで、Rを利用してCSVからグラフを生成することにしています。ただしRの利用に慣れていないので、Webで事例を探しつつ手探りでスクリプトを組んでいるので、ロジックの見通しが悪いし、簡単に出来ることを、わざわざ複雑に処理しているようか感覚が抜けきれませんでした。一昨年に放送大学で「Rで学ぶ確率統計('21)」を受講しました。そこで「Tidyverse」というものの存在を知り、従来のRとは違いがあり、便利そうではあるものの、完璧に理解するには至りませんでした。
最近になって再びCSVからグラフを描く必要がでてきました。従来から慣れている方法でもグラフは描けそうですが、これを機会に改めてTidyverseを理解してみることにしました。特に、ggplot2を使えば、従来の方法よりもグラフが統一的な方法で描けそうです。
まずは、単純な折れ線グラフを描く練習をしてみて、Tidyverseやggplot2の使い方に慣れてみました。よく理解できたとは言えませんが、グラフを描くのに最低限必要な点は理解したと思います。
次に、同一グラフ内に複数の折れ線グラフを描く場合、ggplot2では如何に処理するのか調べました。ggplot2を使えば、同一グラフに折れ線グラフを追加していく事はできるようです。試してみたら、確かに出来ました。しかし折れ線グラフを追加するたびに関数「geom_line()」が増えていくので、ロジックがスッキリしません。しかも折れ線グラフを数本追加するくらいなら、力業でなんとかできるかもしれませんが、何十本も追加するとしたら(やれば出来るかもしれませんが)やっていられません。
僕が悩んでいるような事柄はFAQだろうと思ったのですが、Webを検索しても解決策が見つかりません。もしかすると検索キーワードが悪いのかもしれませんが、適切な検索キーワードが与えられるということは、ほぼ正解を知っているという事なので、何もわからない場合は検索キーワードすら思いつかないのです。そうこうしているうちに、次のようなWeb記事に辿りつきました。
ここで後者の記事の中に以下のような事が書かれていました。サラッと書いてありますが、これが僕の求めていた情報でした。
今のwide形式のデータだとグラフを作りづらいので、long形式に変換したいと思います。「tidyr」という便利パッケージの「gather」関数を使ってみました。
ここで言及されている関数「gather()」は、答えを求めて闇雲にWebで検索を繰り返していた際にも見かけたような気がしますが、その際には関係ないと思って、読み飛ばしていました。
試行錯誤を繰り返しましたが、これでCSVから複数系列の折れ線グラフを描くことが出来そうです。