🖌️
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