高速にggplotする
ここ(Accelerating ggplot2: use a canvas to speed up plots creation)にあるように、 ベースマップを作成しておくことで高速な描画が期待できる。
library(tidyverse) library(sf) nc <- read_sf(system.file("shape/nc.shp", package="sf")) nc_p <- st_sample(nc, size = 100) %>% st_sf() base_map <- ggplot(data=nc) + geom_sf() microbenchmark::microbenchmark( base_map + geom_sf(data = nc_p), ggplot(data=nc) + geom_sf() + geom_sf(data=nc_p) )
Unit: milliseconds expr min lq mean median uq max neval cld base_map + geom_sf(data = nc_p) 2.378383 2.499209 2.937826 2.576802 2.827515 24.75987 100 a ggplot(data = nc) + geom_sf() + geom_sf(data = nc_p) 4.982936 5.213071 5.761455 5.411302 6.064894 10.97817 100 b
行番号(名前)をデータフレームに追加する
これまではtibble::rowid_to_column()
を利用してきたが、この処理をもう少し早くする必要が出てきてしらべていたら、dplyr::add_rownames()の存在を知り、速度比較したらあやかったので今後はこれを使うことにする。
library(tidyverse) library(microbenchmark) library(data.table) iris_df <- iris %>% as.data.table() microbenchmark(iris %>% add_rownames(), iris %>% rownames_to_column(), iris_df %>% add_rownames(), iris %>% mutate(id = seq.int(nrow(.))))
Unit: milliseconds expr min lq mean median uq max neval cld iris %>% add_rownames() 1.218453 1.262064 1.416237 1.310582 1.368730 4.750718 100 a iris %>% rownames_to_column() 2.834875 2.919264 3.122361 2.996101 3.133352 5.571955 100 c iris_df %>% add_rownames() 1.384211 1.447833 1.556418 1.512777 1.599620 2.527902 100 a iris %>% mutate(id = seq.int(nrow(.))) 2.348928 2.415761 2.593333 2.479005 2.568303 5.112818 100 b
追記:
dplyr::add_rownames()
はduplicatedとなっており、代わりにtibble::rownames_to_column()
を利用せよというwarningが出てくる。
少し遅いがtibbleの関数を利用するほうが無難という結論。
グラフをつくる前に読む本
グラフをつくる前に読む本を読んだ。 献本されたというツイッターを多く見たので、読んでみた。
下記に示すグラフの種類についてどのような場合に・どのようなことを表現したいときに利用すべきかが書いてある。
- 棒グラフ
- 折れ線グラフ
- 円グラフ
- レーダーチャート
- ヒートマップ
- 散布図
- 積み上げグラフ
これまでにさまざまなグラフを見てきていると思うので、 自身の理解している(把握している)使い方と相違なければすらすらと読める。 ある意味当たり前のことが書かれている。ただし、自身のこれまで用いてきた使い方の再確認するという意味では一度読んでおいてよいと思う。
また、それぞれのグラフが用いられた起源について書かれており、どのような経緯でそれぞれのグラフで表現する必要性があり生まれたかが少しわかり面白いと思う。 また著者の方針ですべてのグラフにはオープンにされている実データを用いており、より分かりやすくなっていると思う。
ところどころに著者のデータに対する解釈が書かれており(その解釈が正しいかどうかは別として)、データの結果を単に示すことだけでなくそこからいかに考察しデータを読み解くことが重要であると考えさせられた。
利益が絡むと、よく見えるようにインチキ工夫しようと考えるが、
ぜひ本を読んでまじめなグラフづくりが行われるように願うばかりである。
RQGISを利用してみる
RQGISパッケージを利用することでQGISの関数を利用することができる。
インストール方法はvignetteにまとめられているので、そちらを参考に進めるとインストールできる。
ger <- raster::getData(name = "GADM", country = "DEU", level = 1)
library(sp) library(tidyverse) library(sf) library(RQGIS)
set_env()
Trying to find QGIS in C:/OSGEO4~1.
$root [1] "C:\\OSGeo4W64" $qgis_prefix_path [1] "C:\\OSGeo4W64\\apps\\qgis-ltr" $python_plugins [1] "C:\\OSGeo4W64\\apps\\qgis-ltr\\python\\plugins"
必要とするアルゴリズムを検索する場合にはfind_algoristhms()を利用する。 検索の際には正規表現を利用することができる。
find_algorithms(search_term = "(polygon)(centroid)")
[1] "Polygon centroids------------------------------------>qgis:polygoncentroids" [2] "Polygon centroids------------------------------------>saga:polygoncentroids"
find_algorithms(search_term = "(split)(line)")
[1] "Split lines with lines------------------------------->qgis:splitlineswithlines"
使い方を確認したい場合にはget_usage()を利用する。
get_usage(alg = "qgis:polygoncentroids")
ALGORITHM: Polygon centroids INPUT_LAYER <ParameterVector> OUTPUT_LAYER <OutputVector>
必要なパラメータを確認するにはget_args_man()を利用する。
params <- get_args_man(alg = "qgis:polygoncentroids") params
$INPUT_LAYER [1] "None" $OUTPUT_LAYER [1] "None"
params$INPUT_LAYER <- ger params$OUTPUT_LAYER <- file.path(tempdir(), "get_coords.shp") out <- run_qgis(alg = "qgis:polygoncentroids", INPUT_LAYER = ger, OUTPUT_LAYER = file.path(tempdir(), "ger_coords.shp"), load_output = T)
出力結果を確認する。qgis:polygoncentroid の場合はsfオブジェクトで結果が得られる。
class(out)
[1] "sf" "tbl_df" "tbl" "data.frame"
plot(ger) plot(out, add = T, col = "blue")
日本語を含むデータがある場合にはうまく実行できないので注意する必要がある。 実行できたとしてもデータフレームないの文字が文字化けしているので、データを確認すること。文字化けを回避する方法ご存知の方がいましたらコメントお願いいたします。
日本学生支援機構の奨学金
日本学生支援機構で初となる給付型奨学金に約2500人を採用されたそうである。
日本学生支援機構の奨学金の貸与者数について調べてみると、 平成26年の実績が公表されている。 月ごとに貸与者数に変動があるが、多い時で第一種で約45万人、第二種で85万人が貸与を受けている。 合計で130万人近くが日本学生支援機構の奨学金の貸与を受けている。
これに比べて今回の給付型に採用された人は貸与者数の0.2%である。 利子なしの第一種奨学金を借りたくても借りれない人が多くいると考えられる中、給付型の奨学金を借りることはかなり困難であると考えられる。
そもそも、第一種奨学金の貸与者数に比べて第二種奨学金の貸与者数は2倍近くある。 均等な教育機会の均等を確保されるために実施される国(公共)の事業なのに 利子をとる第二種奨学金の貸与者数が多すぎると思う。 そして、財務状況にて損益状況を勘定していることに違和感がある。 個別の法人にして収益を上げる必要があるのか。 民間の事業ではないのだから収益を上げるぐらいなら第一種奨学金の給付者を増やすべきではないかと思う。
詳しいことはわからないが、奨学金貸与事業の損益状況をみると、 事業収益として、学資金利息が378億円に対して、延滞金収入が41億円と10%近くもある。 民間事業ならそれで収益が出て万々歳なのだろうけど、公共事業でこういう状況ってどうなんでしょうかね。
学会名鑑による建築・土木系学会の会員数
日本の学会を調べるのに便利?な学会名鑑というものがある。
分野ごとに学会を調べられるので、土木工学・建築学に絞ってスクレイピングし、 学会の会員種別ごとの人数を調べてみた。 土木学会、日本建築学会がメジャーな学会であることがわかる。 7位には土木学会の学生会員がランクインしており、そのほかの学会は土木学会の学生会員数より少ない会員数ということになる。
まあ、会員種別も77種類あるので、目安程度であるが。。。 というか会員種別ぐらいと統一してほしい。
順位 | 会員種別 | 人数 | 学会名 |
---|---|---|---|
1 | 正会員 | 34384 | 土木学会 |
2 | 正会員(名誉会員・終身正会員含む) | 32790 | 日本建築学会 |
3 | 正会員 | 14640 | 空気調和・衛生工学会 |
4 | 正会員 | 10038 | 日本測量協会 |
5 | 正会員(個人) | 7415 | 地盤工学会 |
6 | 正会員 | 6400 | 日本コンクリート工学会 |
7 | 学生会員 | 4870 | 土木学会 |
8 | 正会員 | 4005 | 日本都市計画学会 |
9 | 個人会員 | 4000 | 日本科学者会議 |
10 | 個人会員 | 3177 | 電力土木技術協会 |
11 | 個人正会員 | 2398 | プレストレストコンクリート工学会 |
12 | 正会員(個人) | 2304 | 日本非破壊検査協会 |
13 | 特別会員 | 2170 | 日本測量協会 |
14 | 正会員 | 1883 | 交通工学研究会 |
15 | 正会員 | 1868 | 砂防学会 |
16 | 正会員 | 1506 | 日本下水道協会 |
17 | 正会員 | 1355 | 日本水道協会 |
18 | 正会員 | 1300 | 日本地すべり学会 |
19 | 正会員 | 1295 | 都市住宅学会 |
20 | 正会員 | 1283 | 日本木材学会 |
21 | 正会員 | 1273 | 日本放射光学会 |
22 | 正会員 | 1151 | 日本地震工学会 |
23 | 継続教育連携会員 | 1146 | 日本都市計画学会 |
24 | 正会員 | 1050 | 日本写真測量学会 |
25 | 準会員 | 1019 | 日本建築学会 |
26 | 賛助会員 | 977 | 日本下水道協会 |
27 | 正会員(一般会員) | 938 | 日本地域学会 |
28 | 支部団体会員 | 927 | 日本建設機械施工協会 |
29 | 正会員 | 889 | 日本騒音制御工学会 |
30 | 正会員 | 888 | 応用生態工学会 |
31 | 正会員 | 862 | 日本計画行政学会 |
32 | 特別会員 | 843 | 地盤工学会 |
33 | 正会員 | 836 | こども環境学会 |
34 | 個人会員 | 800 | 日本太陽エネルギー学会 |
35 | 正会員 | 798 | 日本不動産学会 |
36 | 正会員 | 778 | ダム工学会 |
37 | 正会員(終身会員含む) | 717 | 日本航海学会 |
38 | 正会員 | 714 | 日本地下水学会 |
39 | 正会員(法人) | 707 | 日本建築学会 |
40 | 正会員A | 703 | 日本火災学会 |
41 | 正会員(含む終身会員) | 700 | 日本自然災害学会 |
42 | 正会員 | 666 | 日本福祉のまちづくり学会 |
43 | 普通会員 | 635 | 日本地図学会 |
44 | 正会員 | 620 | 日本緑化工学会 |
45 | 法人会員 | 599 | 土木学会 |
46 | 第2種正会員(個人会員) | 569 | 日本鋼構造協会 |
47 | 正会員B | 565 | 日本火災学会 |
48 | 賛助会員 | 563 | 日本水道協会 |
49 | 賛助会員 | 478 | 空気調和・衛生工学会 |
50 | 正会員 | 461 | 日本交通学会 |
51 | 特別会員 | 456 | 土木学会 |
52 | 特別会員 | 413 | 日本下水道協会 |
53 | 特別会員 | 395 | 日本水道協会 |
54 | 正会員 | 394 | 日本風工学会 |
55 | 個人会員 | 392 | 日本地方自治学会 |
56 | 個人会員 | 378 | 日本エアロゾル学会 |
57 | 学生会員 | 376 | 空気調和・衛生工学会 |
58 | 学生会員 | 376 | 日本都市計画学会 |
59 | 通常会員 | 374 | 日本サンゴ礁学会 |
60 | 正会員 | 368 | 日本災害復興学会 |
61 | 正会員 | 355 | 実践教育訓練研究協会 |
62 | 第2種団体会員 | 337 | 日本コンクリート工学会 |
63 | 正会員 | 335 | 日本熱物性学会 |
64 | 学生会員 | 328 | 日本コンクリート工学会 |
65 | 正会員 | 321 | 日本インテリア学会 |
66 | 正会員 | 320 | 日本沿岸域学会 |
67 | 正会員 | 320 | 人間・環境学会 |
68 | 会員 | 316 | 歴史地震研究会 |
69 | 団体会員 | 311 | 環境技術学会 |
70 | 正会員 | 310 | 日本女性科学者の会 |
71 | 個人会員 | 308 | 産業考古学会 |
72 | D種会員 | 308 | 日本非破壊検査協会 |
73 | 個人会員 | 303 | 交通史学会 |
74 | 個人会員 | 301 | コミュニティ政策学会 |
75 | 正会員 | 300 | 都市環境デザイン会議 |
76 | 正会員 | 288 | 日本図学会 |
77 | 正会員 | 279 | 日本生活学会 |
78 | 一般会員 | 273 | 日本産業教育学会 |
79 | 正会員 | 270 | 日本活断層学会 |
80 | 一般会員 | 265 | 日本記号学会 |
81 | 正会員(国内) | 253 | 土壌物理学会 |
82 | 正会員 | 250 | 社叢学会 |
83 | 個人会員 | 244 | 森林利用学会 |
84 | 普通会員 | 243 | 比較文明学会 |
85 | 賛助会員 | 240 | 日本建築学会 |
86 | 会員 | 238 | 環境システム計測制御学会 |
87 | 一般会員 | 232 | 総合人間学会 |
88 | 正会員 | 225 | 日本雪工学会 |
89 | 普通会員 | 221 | 日本生活文化史学会 |
90 | 個人正会員 | 220 | 環境経営学会 |
91 | 団体会員 | 217 | 日本建設機械施工協会 |
92 | 正会員 | 214 | 環境技術学会 |
93 | 購読会員 | 208 | 砂防学会 |
94 | 一般会員 | 204 | 日本国際地域開発学会 |
95 | 賛助会員 | 203 | 砂防学会 |
96 | 法人会員 | 200 | 電力土木技術協会 |
97 | 正会員 | 195 | 日本付着生物学会 |
98 | 正会員 | 195 | 日本民俗建築学会 |
99 | 賛助会員 | 194 | 日本都市計画学会 |
100 | 特別会員 | 192 | 交通工学研究会 |
101 | 個人会員 | 180 | 国際ジオシンセティックス学会日本支部 |
102 | 正会員 | 170 | 交通権学会 |
103 | 正会員 | 170 | 資産評価政策学会 |
104 | 団体会員C | 165 | 日本騒音制御工学会 |
105 | 学生会員 | 153 | こども環境学会 |
106 | 名誉会員 | 150 | 地盤工学会 |
107 | 正会員、学生会員、名誉会員、顧問、名誉顧問 | 150 | 日本景観学会 |
108 | 法人会員 | 142 | 日本鋼構造協会 |
109 | 学生会員 | 137 | 交通工学研究会 |
110 | 学生会員 | 137 | 日本サンゴ礁学会 |
111 | 学生会員 | 132 | 日本航海学会 |
112 | 正会員 | 132 | 日本庭園学会 |
113 | 一般会員 | 130 | 農村建築研究会 |
114 | 個人会員 | 126 | 日本オフィス学会 |
115 | 賛助会員 | 125 | 都市住宅学会 |
116 | 学生会員 | 121 | 日本計画行政学会 |
117 | 正会員 | 114 | アジア文化造形学会 |
118 | 学生会員 | 114 | 砂防学会 |
119 | 学生会員 | 112 | 日本非破壊検査協会 |
120 | 正会員 | 111 | 観光まちづくり学会 |
121 | 個人会員 | 110 | 日本建設機械施工協会 |
122 | 法人会員 | 108 | 日本地震工学会 |
123 | 学生会員 | 108 | 日本生活学会 |
124 | 学生会員 | 107 | 応用生態工学会 |
125 | 学生会員 | 107 | 日本地震工学会 |
126 | 準会員 | 106 | 日本鋼構造協会 |
127 | 一般会員 | 100 | 自然環境復元学会 |
128 | 市民会員 | 100 | 社叢学会 |
129 | 賛助会員 | 99 | 日本火災学会 |
130 | 賛助会員 | 98 | 日本騒音制御工学会 |
131 | 賛助会員 | 94 | 日本地すべり学会 |
132 | 正会員(個人) | 94 | 北海道都市地域学会 |
133 | 賛助会員 | 88 | 日本木材学会 |
134 | C種会員 | 85 | 日本非破壊検査協会 |
135 | 学生会員 | 84 | 日本緑化工学会 |
136 | シニア会員 | 82 | ダム工学会 |
137 | 賛助会員 | 80 | 日本不動産学会 |
138 | 正会員 | 77 | 日本大ダム会議 |
139 | 正会員(学生会員(大学院生)) | 70 | 日本地域学会 |
140 | 学生会員 | 69 | 日本エアロゾル学会 |
141 | 賛助会員 | 68 | プレストレストコンクリート工学会 |
142 | 学生会員 | 63 | 日本福祉のまちづくり学会 |
143 | 会友 | 61 | 日本サンゴ礁学会 |
144 | 協力会員 | 60 | 社叢学会 |
145 | 特別会員 | 59 | 日本地下水学会 |
146 | 正会員 | 58 | 日本地すべり学会 |
147 | A種会員 | 56 | 日本非破壊検査協会 |
148 | 特別会員 | 55 | 日本鋼構造協会 |
149 | 学生会員 | 55 | 日本自然災害学会 |
150 | 個人正会員 | 55 | 日本マクロエンジニアリング学会 |
151 | 賛助会員 | 55 | 日本緑化工学会 |
152 | 大学 | 53 | 海洋深層水利用学会 |
153 | 準会員 | 53 | 日本インテリア学会 |
154 | 団体会員 | 53 | 日本木材学会 |
155 | 賛助会員 | 52 | ダム工学会 |
156 | 購読会員 | 52 | 日本活断層学会 |
会員数50人以下は省略
ついでに会員種別一覧も載せておこう。
正会員 |
学生会員 |
名誉会員 |
賛助会員 |
大学 |
公的機関 |
民間 |
その他 |
団体会員 |
個人正会員 |
法人正会員 |
会員 |
学生会員(大学院生) |
法人会員 |
終身会員 |
特別会員 |
学生会員(大学院修士課程) |
学生会員(大学院修士課程以外) |
海外特別会員 |
個人会員 |
準会員 |
NPO会員 |
購読会員 |
一般会員 |
市民会員 |
協力会員 |
維持会員 |
正会員(個人) |
正会員(法人) |
セメント製造会社 |
学生会員(修士以上) |
顧問 |
名誉会長 |
シニア会員 |
協力法人 |
正会員(国内) |
正会員(海外) |
学生会員(国内) |
学生会員(海外) |
普通会員 |
学生会員(大学院生のみ) |
正会員A |
正会員B |
正会員、学生会員、名誉会員、顧問、名誉顧問 |
団体会員、賛助会員 |
支部団体会員 |
正会員(名誉会員・終身正会員含む) |
正会員(終身会員含む) |
第2種正会員(個人会員) |
学生会員(大学院生・修士課程) |
寄贈 |
第1種団体会員 |
第2種団体会員 |
通常会員 |
外国会員 |
会友 |
正会員(含む終身会員) |
団体正会員 |
賛助団体会員 |
団体会員B |
団体会員C |
団体会員D |
準会員(うち大学院生) |
正会員(一般会員) |
正会員(学生会員(大学院生)) |
継続教育連携会員 |
国外会員 |
名誉員 |
A種会員 |
B種会員 |
C種会員 |
D種会員 |
正会員(院生) |
特別賛助会員 |
学生会員(大学院生) |
学生会員(学部学生を除く) |
正会員(団体) |