2018年度の獣医師の届数を元にグラフを作成しました。

データ元:農水省資料

箱の中に箱があるようなやつをTree Mapといいます。Rで作成しました。色をいい感じにするのが大変です。この表現方法にこだわらない場合は、他の方法のほうがきれいに作れるかもしれません。

必要なライブラリーはtreemapです。さっそく、treemapに内蔵されているデータGNI2014を使って、サンプルコードでtreemapを作ってみます。

library(treemap)

data(GNI2014)
treemap(GNI2014,
       index=c("continent", "iso3"),
       vSize="population",
       vColor="GNI",
       type="value",
       format.legend = list(scientific = FALSE, big.mark = " "))

色が好きじゃないです。

自分のデータを作る

まず、データをエクセルで作成します。列は、左から順に大きなクラスから小さなクラスになっていきます(第1クラス→第2クラス→第3クラス・・・)。

第3クラスが1種類のものは、第3クラスは空欄にします。

Rで日本語を使うのは、1コード余分に書かないといけません。詳しく知りたい方は、以下に日本語の設定方法を書きましたのでご覧ください。

以下のコードでmeiryoを追加しておきます。

windowsFonts(meiryo = windowsFont("Meiryo UI"))

では、早速Treemapを作ります。

df <- read.csv("tree_j.csv")

treemap(df,
        index = c("X1_group", "X2_group", "X3_group"),
        vSize = "Freq_2018",
        type = "index", #"index","value","comp","dens","depth","categorical"
        palette = "HCL",
        palette.HCL.options = list(hue_start=70,
                                   hue_end=400,
                                   luminance=60,
                                   luminance_slope=6),
        border.lwds = list(10,4,1),
        border.col=c("white"),
        fontcolor.labels = "white",
        fontsize.labels = c(25,15,8),
        force.print.labels=T,
        bg.labels = 0, # trance parancy 0 - 255
        fontfamily.labels = "meiryo",
        title ="獣医師の分布",
        fontfamily.title = "meiryo",
        fontsize.title =30,
        aspRatio=0.75
) 

index = c(“X1_group”, “X2_group”, “X3_group”):グループの名前列を教えます。エクセルの列名が数字から始まるのでXがついています。

vSize = “Freq_2018″:長方形のサイズの基準となる列を教えます。

type = “index”:色の付け方をしていします。indexのほかに使える変数は、#”index”,”value”,”comp”,”dens”,”depth”,”categorical”です。色々試してください。

palette = “HCL”:色のパレットを決めます。library(RColorBrewer)をしておけば、RColorBrewerの他のパレット(Set1、Pastel1等)を選択できます。が、HCLを選択しておくと、細かく色を設定できますので、これがお勧めです。

palette.HCL.options = list(hue_start=70,
hue_end=400,
luminance=60,
luminance_slope=6), : 色の設定です。細かい設定の数値は、※後述の方法でインタラクティブに選択することができます。

border.lwds = list(10,4,1),: 長方形の間のラインの大きさです。第1クラス内を分けるのがサイズ10、第2クラス内はサイズ4、第3クラス内はサイズ1です。
border.col=c(“white”),:長方形間の線の色です。複数設定できます。

fontcolor.labels = “white”,:ラベルのフォントの色です
fontsize.labels = c(25,15,8),:ラベルのフォントサイズです。第1クラスのラベルが25、第2クラスが15、第3クラスが8です。

force.print.labels=T, ラベルに重なりがあった場合に、消えてしまう設定がデフォルトの様ですが、それを無効にします。

bg.labels = 0, :色を”red”のように指定するか、 透明度を0 – 255の間でしていします。色を指定にバグがあるような気がします。クラスごとに色を設定できません、単色選んでも怒られます。

fontfamily.labels = “meiryo”,:追加した日本語フォントを使っています。

title =”獣医師の分布”,:タイトルです。なぜかタイトルのフォントカラー設定がない。。

fontfamily.title = “meiryo”,:タイトルのフォント名を教えます。

fontsize.title =30,:タイトルのフォントサイズです。

aspRatio=0.75:アスペクト比を指定します。よこ÷たて です。1より大きいと横長。1より小さいと縦長。

※ 色の細かい指定方法

以下のコードで、色の細かい設定を試せるインタラクティブなウィンドウが開きます。

treecolors(height = 500)

最初はノードの色を選択する画面ですが、Treemapを選択します。すると以下のような画面になります。色々設定をいじります。

luminanceを高くすることで、パステル調になります。

いい色が見つかったら、そのパラメーターをメモって、さきほどのコード(palette.HCL.options)で設定します。

palette.HCL.options = list(hue_start=70,
hue_end=400,
luminance=60,
luminance_slope=6),

Categories:

category