LoginSignup
14
7

More than 5 years have passed since last update.

ヒートマップを縦と横に繰り返すことで、11の強制収容所の平均気温を365日/24時間分一気に可視化する

Last updated at Posted at 2018-05-28

image.png

第二次世界大戦時にはアメリカに日系人の強制収容が11ほどありましたが、そのほとんどが天候的に過酷な場所であったことは多くの方には知られていません。詳細については、こちらのブログポストにデータの可視化とともに書かれていますが、今日はそれぞれの収容所のあった場所の気温が一年365日、24時間を通してどのように変化するのかをわかりやすく理解するするために、Rのggplot2、ggExtra、viridisというパッケージを使ってヒートマップという手法を使って可視化してみたいと思います。

ちなみに、Exploratoryの中に標準のヒートマップがありますがそちらで可視化してみると以下のようになります。

image.png

しかし、残念ながら現在それぞれの収容所の場所で繰り返すというオプションがヒートマップにはサポートされていません。そこで、上記のRのパッケージを直接Exploratoryのノートの中で使うことで、時間を縦軸に、日を横軸に、月を横方向の繰り返しに、収容所の場所を縦方向の繰り返しに使ったカスタムのヒートマップを作ってみたいと思います。

下準備: viridis, ggExtraのインストール

このヒートマップでは、ggplot2というチャートを描くためのRのパッケージと、それを拡張するためのviridis、ggExtraというパッケージが使われています。viridisは色パレットを使うために、ggExtraはヒートマップの枠線を消してすっきり見せるためにそれぞれ使われています。

まず、このviridis、ggExtraの両パッケージをインストールします。プロジェクトリストの横にある、R パッケージのメニューをクリックします。

image.png

インストールタブをクリックし、viridisとタイプして、インストールボタンをクリックします。

image.png

ggExtraも同様にしてインストールします。

これらのパッケージのインストールは、一度行ってしまえばそれ以降は必要ありません。

ヒートマップの作成

ここでは、アメリカにおける日系人の強制収容で紹介されている、収容所ごとの年間の各時間ごとの平均気温のデータを用います。データはこちらからダウンロードできます。平均気温のデータは、Iowa State UniversityのIowa Environmental Mesonetの提供するデータを使わせていただきました。

データのページからEDFファイルをダウンロードしてExploratoryにインポートすると、 campというデータフレームが作られます。これには、月(month)、日(day), 時間(hour), 平均気温(tmp), キャンプの場所(camp)の列があり、各行は場所ごと、各時間ごとの平均気温を表します。

image.png

“ドキュメント”の右側にあるプラスアイコンをクリックし、“ノート”を選択して新しいノートを作成します。

image.png

下記のRのコードブロックを、コピーしてノートの本文に貼り付けます。


```{r echo=FALSE, message=FALSE, warning=FALSE, fig.width=10, fig.height=25, cache=TRUE}

# 必要なライブラリをロード
library(ggplot2)
library(ggExtra)
library(viridis)

# ヒートマップを生成するggplot関数の呼び出し
ggplot(camp, aes(day, hour, fill=tmp))+
    # 色の指定
    scale_fill_viridis(option="C")+
    # 繰り返しの設定
    facet_grid(camp~month)+
    # x軸の設定 - 10日おきにラベルを振る
    scale_x_continuous(breaks =c(1,10,20,30))+
    # y軸の設定 - 各時間ごとにラベルを振る
    scale_y_continuous(trans = "reverse", breaks = unique(camp$hour))+
    # スタイルの設定
    theme_minimal(base_size=12)+
    geom_tile(color= "white",size=0.1) +
    labs(title="Hourly Temps", x="Day", y="Hour Commencing")+
    theme(legend.position = "bottom")+
    theme(plot.title=element_text(size=16))+
    theme(plot.title=element_text(hjust=0))+
    theme(strip.background = element_rect(colour="white"))+
    theme(axis.ticks=element_blank())+
    theme(axis.text.y=element_text(size=6)) +
    removeGrid()

``` 

“実行”ボタンを押すと、ヒートマップが表示されます。

image.png

色を変更する

Rのコードブロックの中のscale_fill_viridisという関数が、このヒートマップの色を決定しています。ここに違う関数やパレット名を指定することで、色を変更することができます。例えば、青→黄色→赤と変化する色パレットを使いたい場合、scale_fill_distiller関数を使い、“RdYlBu”を指定します。


scale_fill_distiller(palette = "RdYlBu")

出力例は以下のようになります。

image.png

利用可能な関数およびパレット名については、Sequential, diverging and qualitative colour scales from colorbrewer.orgに詳しく書かれてます。

ggplot2の詳細については、ggplot2サイトを参照してください。


まだ、Exploratory Desktopをお持ちでない方へ

まだExploratory Desktopをお持ちでない場合は、こちらから30日間無料でお試しいただけます。クレジットカード等の登録は必要ありません。ぜひ、お試しください。


image.png

Exploratory社がシリコンバレーで行っているトレーニングプログラムを日本向けにした、データサイエンス・ブートキャンプを東京で開催しています。データサイエンスの手法を基礎から体系的に、プログラミングなしで学んでみたい方、そういった手法を日々のビジネスに活かしてみたい方はぜひこの機会に参加を検討してみてください。詳しい情報はこちらをご覧ください!

14
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
7