줄리아에서 박스 플랏 그리는 법
설명
박스 플랏을 그리기 위해서는 통계 시각화 패키지인 StatsPlots.jl
을 사용해야한다.
boxplot([data], labels=[label])
코드
using StatsPlots
x = rand(0:100, 100)
y = rand(50:100, 100)
z = cat(x,y, dims=1)
boxplot(x, label="x")
boxplot!(y, label="y")
boxplot!(z, label="z")
혹은 boxplot([x,y,z], label=["x" "y" "z"])
도 같은 그림을 그린다. lable
에는 쉼표가 없어야함에 주의하자. 즉 $3 \times 1$ 벡터가 아니라 $1 \times 3$ 배열이여야한다.
x축 tick
문자열로 x축의 tick을 표현하고 싶다면,
boxplot([x, y, z], xticks=(1:3, ["x", "y", "z"]), label=["x" "y" "z"])
혹은 아래의 코드도 같은 그림을 그린다. 차이점이라면 실제 좌표가 어떻게 되느냐 하는 것이다. 위의 코드는 실제론 각 박스들이 그려지는 x좌표가 1, 2, 3 인데 그래프의 tick 값만 x, y, z로 보여지게 바꾼 것이다. 아래의 코드는 실제로 “x”, “y”, “z” 좌표 위에 박스를 그린다.
boxplot(fill("x", length(x)), x, label="x")
boxplot!(fill("y", length(y)), y, label="y")
boxplot!(fill("z", length(z)), y, label="z")
2차원 배열로 그리기
a = rand(100, 3)
boxplot(a, xticks=(1:3, ["x", "y", "z"]), label=["x" "y" "z"])
데이터 프레임으로 그리기
데이터 프레임 그 자체로는 그릴 수 없고, 배열로 변환해야한다.
using MLDatasets
using DataFrames
df = Iris().features
boxplot(Array(df), xticks=(1:4, names(df)), label=reshape(names(df), (1,4)))
평균
평균을 표시하는 옵션은 따로 없다. scatter
로 찍어주자.
using Statistics
boxplot(fill("x", length(x)), x, labels="x")
boxplot!(fill("y", length(y)), y, labels="y")
boxplot!(fill("z", length(z)), z, labels="z")
scatter!(["x", "y", "z"], [mean(x), mean(y), mean(z)], color=palette(:default)[1:3], label="")
혹은 다음의 코드도 같은 그림을 그린다.
boxplot([x, y, z], xticks=(1:3, ["x", "y", "z"]), label=["x" "y" "z"])
scatter!([1, 2, 3], [mean(x), mean(y), mean(z)], color=palette(:default)[1:3], label="")
환경
- OS: Windows11
- Version: Julia 1.9.0, Plots v1.38.12, StatsPlots v0.15.5, DataFrames v1.5.0, MLDatasets v0.7.11