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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/125186/f6908ac9-30cd-b2ca-a76e-37e66b30f3d7.png)


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

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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/125186/0c72efb7-9226-d85a-4010-8eeeafdb2825.png)

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

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

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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/125186/733508ae-d567-2aaf-9ff7-61762d91f195.png)


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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/125186/d387a5c3-d281-a8ed-7d63-89f061da732e.png)

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

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

## ヒートマップの作成
ここでは、[アメリカにおける日系人の強制収容](https://exploratory.io/note/kanaugust/5619378403788864)で紹介されている、収容所ごとの年間の各時間ごとの平均気温のデータを用います。データは[こちら](https://exploratory.io/data/kei/camp-1550219056207996)からダウンロードできます。平均気温のデータは、Iowa State UniversityのIowa Environmental Mesonetの提供する[データ](https://mesonet.agron.iastate.edu/request/download.phtml)を使わせていただきました。

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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/125186/518f955b-6604-8ded-873d-b8695af45935.png)


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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/125186/ff9cb5d2-8601-7674-0217-f79a1aa0b6d8.png)


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

<pre><code>
```{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()

```　
</code></pre>

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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/125186/8c5c9a12-d82c-182d-2eba-ddeb8a107eb2.png)



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

```r

scale_fill_distiller(palette = "RdYlBu")
```
出力例は以下のようになります。


![image.png](https://qiita-image-store.s3.amazonaws.com/0/125186/f4a357a9-16d2-d03e-f477-18f93f2debc2.png)


利用可能な関数およびパレット名については、[Sequential, diverging and qualitative colour scales from colorbrewer.org](http://ggplot2.tidyverse.org/reference/scale_brewer.html)に詳しく書かれてます。

ggplot2の詳細については、[ggplot2サイト](http://ggplot2.tidyverse.org/)を参照してください。




---

### まだ、Exploratory Desktopをお持ちでない方へ
まだExploratory Desktopをお持ちでない場合は、[こちら](https://exploratory.io/?utm_campaign=note-heatmap-ja&utm_medium=blog&utm_source=qiita&lang=ja)から30日間無料でお試しいただけます。クレジットカード等の登録は必要ありません。ぜひ、お試しください。


---

![image.png](https://qiita-image-store.s3.amazonaws.com/0/125186/28b78410-e199-10bb-4f1a-0cfad83190f0.png)


Exploratory社がシリコンバレーで行っているトレーニングプログラムを日本向けにした、データサイエンス・ブートキャンプを東京で開催しています。データサイエンスの手法を基礎から体系的に、プログラミングなしで学んでみたい方、そういった手法を日々のビジネスに活かしてみたい方はぜひこの機会に参加を検討してみてください。詳しい情報は[こちら](https://exploratory.io/data-academy?utm_campaign=note-heatmap-ja&utm_medium=blog&utm_source=qiita)をご覧ください!