奥村先生の Python のページで,出生性比のグラフの描き方が紹介されていた
https://oku.edu.mie-u.ac.jp/~okumura/python/sexratio.html
Julia でもやってみた。
CSV ファイルをダウンロードして保存した段階で,エディタで開いて,utf-8 ファイルにした(そうしないと missingstring="…" が効かなかった)。
その他,1944, 1945, 1946 年のデータは全項目欠測値だけど,エディタで開いた時点で3行挿入したほうが簡単だった気がする(プログラム3行も消費した)。
データの先頭11行は,まあ,削らないでそのまま使った。
using DataFrames, CSV, Dates, Plots
df = CSV.read("/Users/foo/Downloads/mb010000.csv", DataFrame,
skipto=12, # データ開始行
header=["年","出生数_総数","出生数_男","出生数_女","出生率","出生性比","合計特殊出生率"], # 列名
missingstring="…"); # 欠損値定義
df_missing = DataFrame(年=["1944", "1945", "1946"]); # 欠損値のデータフレーム
df2 = join(df, df_missing, on=:年, kind=:outer); # R での merge 相当
df3 = sort(df2, :年); # ソートしないといけない
df3.出生性比 = df3.出生数_男 ./ df3.出生数_女; # もとの出生性比は100倍して小数点以下一桁で丸めてある
df3.年d = DateTime.(parse.(Int, df3.年)); # 年を DateTime 型に変換する
pyplot(grid=false, color=:black, label="")
tmtick = range(DateTime("1900-01-01"), df3.年d[end], step=Year(10)); # 横軸を描くために面倒なことを
tmticks = Dates.format.(tmtick, "yyyy"); # 横軸を描くために面倒なことを
plot(df3.年d, df3.出生性比, linewidth=0.5, title="年次別出生性比",
xticks=(tmtick, tmticks), tickdirection=:out); # 折れ線グラフ
scatter!(df3.年d, df3.出生性比, marker=(3, 0.6, :blue, stroke(0, :blue))) # データ点は重ね描き