logo

줄리아에서 박스 플랏 그리는 법 📂줄리아

줄리아에서 박스 플랏 그리는 법

설명

박스 플랏을 그리기 위해서는 통계 시각화 패키지인 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

같이보기