🖌️

AlgebraOfGraphicsでリッカートグラフを作成する

に公開

イントロダクション

科学技術計算で使用されているJuliaを使って、アンケートの分析によく使われるリッカートグラフをプロットしてみました。そこまで計算量が多いものではないので、Rのggplot2の方が書きやすいですが、アンケート分析をJuliaでやってみたいというケースを考えて残しておきます。

また、Juliaの裾野を広げるという意味では一般的に使われるアンケートの分析のような用途でも使える方法があった方がとも思うので、記事にしてみました。

AoG Code

設定項目も多めに書いているので、少し冗長的になってますが、今後の備忘録的な意味合いも含めてます。データ加工の部分はもっといい方法があれば更新させていただきます

using AlgebraOfGraphics
using CairoMakie
using DataFrames

df = DataFrame(
    id  = ["S1_1", "S1_2", "S1_3", "S1_4", "S1_5",
           "S2_1", "S2_2", "S2_3", "S2_4", "S2_5"],
    val = [0.3, 0.2, 0.1, 0.4, 0.1,
           0.1, 0.4, 0.3, 0.2, 0.1]
)

df[!, :grp] = repeat(1:2, inner = 5)
df[!, :ans] = repeat(1:5, outer = 2)
df[!, :ans_cat] = repeat(["1", "2", "3", "4", "5"], outer=2)
println(df)

xaxis_label = [
    "S1:Title",
    "S2:Title"
]

axis = (
    width=400,
    height=200,
    xticklabelrotation = pi/8,
    title="Graph TITLE",
    titlealign = :left,
    subtitle = "1:あてはまる ~ 5:あてはまらない",
    titlefont = "Yu Gothic Bold",
    yticks=(1:2, xaxis_label),
    xticklabelsvisible=false,
    xgridvisible=false,
    xticksvisible=false,
    ylabel="",
    xlabel="[%]",
)


data(df) *
mapping(
    :grp, 
    :val; 
    color=:ans_cat => "", 
    stack=:ans_cat
    ) *
visual(
    BarPlot,
    direction=:x,
    # bar_labels=:y, # <-現状だと、累積の値になってしまうので、コメントアウトしております
    # label_position=:center,
    # label_color=:white
) |>
draw(
    axis=axis,
    legend=(
        position=:top,
        titleposition=:top,
        framevisible=false,
        padding=1,
    ),
    scales(
        Color = (; palette = [:red, :tomato, :gray80, :steelblue, :blue ])
    )
)

参考サイト)

Discussion