# # 以下の地図描画関数のデモンストレーション # paint_j_map 二次メッシュを値で色分けしてマッピングする関数 # # 渡すデータは、一列めが二次メッシュコード、2列めが値のデータフレーム # 同梱の codes2.txt にある全メッシュでバックグラウンドを 描いたのち、 # データがあるメッシュでは色を上書きする。 # # plot_on_j_map 緯度・経度を指定して点をプロットする関数 # # 渡すデータは、一列めが緯度、二列めが経度のデータフレーム。 # それぞれの値は度単位の小数点表示。 # # オプション指定は、draw_j_map.R の、上記2関数の説明を参照のこと。 # ※それ以外の内部用関数の説明を読む必要はない。 # #----------------------------------------------------------------- # 本デモの実行に必要な環境・ファイル # # R の実行環境 # map_demo.R このファイル # draw_j_map.R 描画ライブラリ # mesh_lib.R メッシュコードと緯度・経度の変換ライブラリ # color_grad.R 色勾配生成ライブラリ # codes2.txt 4473の二次メッシュコード # # デモ用データ # values01.txt ある基準で評価したメッシュの値(メッシュコード、優先度)。 # 1160 メッシュを含む。 # sp_map.txt 生物の分布データ(緯度、経度、種のコード) # n_species.txt 全二次メッシュのある生物群の種数データ(メッシュコード、種数) # clim_j.txt 全二次メッシュの気象・地形データ(メッシュコード、標高、気温、降水量、積雪、人工物比率) # # # 2011-02-25 by TAKENAKA, A. # Rev. 2012-02-13 by TAKENAKA, A. source('draw_j_map.R') # ライブラリの読み込み # 縦横を 1:1 の比率の描画デバイスを用意すると、図上の縦横がほぼ同じ縮尺になる windows(width = 5, height = 5) par(ask = T) # 確認のため、一枚の描画ごとにストップ ##### デモ1 paint_j_map ##### # 地形・気象データ d <- read.table('clim_j.txt', header = TRUE) d.clim <- data.frame(cbind(d$mesh_code, d$mean_tmp)) # メッシュコードと平均気温 # すべてデフォルト設定で描画 paint_j_map(d.clim) # 前景・背景色パターンの指定(col.back) とタイトル指定 paint_j_map(d.clim, col.back = "black", title = "Mean temp") # rev.scale を TRUE にして、色の順を逆にする。 paint_j_map(d.clim, col.back = "black", title = "Mean temp", rev.scale = TRUE) # no.isl をTRUEにして、離島(南西諸島、小笠原)を描かない paint_j_map(d.clim, col.back = "black", title = "Mean temp", no.isl = TRUE) ##### デモ2 paint_j_map ##### d <- read.table('values01.txt', header = TRUE) # 一部のメッシュのデータのみを含むファイル paint_j_map(d, col.back = "dark.blue", col.scale = "blue") # データがないメッシュの色(col.blank)を指定。 # rgb に、赤成分、緑成分、青成分それぞれの強さを 0 から 1の間で指定するパラメータを渡す。 paint_j_map(d, col.back = "dark.blue", col.scale = "blue", col.blank = rgb(0, 0.5, 0)) ##### デモ3 paint_j_map の続き:非負整数として扱う ##### d <- read.table('n_species.txt', header = TRUE) # is.natural = TRUE を指定 paint_j_map(d, is.natural = TRUE, col.back = "black") # 値が 0 のメッシュを除いて描画。(min.natural = "from.one") paint_j_map(d, is.natural = TRUE, min.natural = "from.one", col.back = "black") # 値が 0 のメッシュは単独で1クラス。(min.natural = "only.zero") paint_j_map(d, is.natural = TRUE, min.natural = "only.zero", col.back = "black") ##### デモ4 plot_on_j_map ##### d.map <- read.table('sp_map.txt', header = TRUE) # 種の分布データを読み込み dd <- d.map[d.map$sp == 'sp-A',] # 一種のデータを抽出 plot_on_j_map(dd, col = 1) dd <- d.map[d.map$sp == 'sp-B',] # 別種を抽出。 plot_on_j_map(dd, col = 4, overlay = TRUE) # overlya を TRUEにして、同じグラフに重ねてプロット dd <- d.map[d.map$sp == 'sp-C',] plot_on_j_map(dd, col = 2, overlay = TRUE) # 同じグラフに重ねてプロット ##### デモ4-2 draw_blank_map + plot_on_j_map ##### d.map <- read.table('sp_map.txt', header = TRUE) # 種の分布データを読み込み spp <- levels(d.map$sp) # 種を抽出 n.spp <- length(spp) draw_blank_map() # 白地図を描く for (i.sp in 1:n.spp) { # 各種について dd <- d.map[d.map$sp == spp[i.sp], ] # データを抽出 plot_on_j_map(dd, col = i.sp, overlay = TRUE) # 上書きプロット } # 凡例を書き込む legend("topleft", legend = spp, col = 1:n.spp, pch = 16, bty = "n", cex = 2) ##### デモ5 plot_on_j_map, by.code = TRUE ##### d.codes <- read.table('species01.txt') # 1種の分布データ(分布するメッシュのコード)を読み込み plot_on_j_map(d.codes, by.code = TRUE, col = 2) # by.codeで、メッシュコードデータであることを明示 ##### デモ6 paint_j_map と plot_on_j_map の合わせ技 ##### # 気象データで色分けした上に、分布データをプロット d <- read.table('clim_j.txt', header = TRUE) # 地形・気象データの読み込み d.clim <- data.frame(cbind(d$mesh_code, d$mean_tmp)) # メッシュコードと平均気温 paint_j_map(d.clim, col.back = "black", col.scale = "blue") # 青スケールで描画 d.map <- read.table('sp_map.txt', header = TRUE) # 種の分布データを読み込み dd <- d.map[d.map$sp == 'sp-B',] # 1種のデータを抽出 plot_on_j_map(dd, col = 2, overlay = TRUE) # overlay を TRUEにして、同じグラフに重ねてプロット