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軸の目盛り

文字列でx軸の目盛りを表したい場合、

boxplot([x, y, z], xticks=(1:3, ["x", "y", "z"]), label=["x" "y" "z"])

または、以下のコードも同じ図を描く。違いは、実際の座標がどうなっているかだ。上のコードでは、実際に各ボックスが描かれるx座標が1, 2, 3だが、グラフの目盛り値だけx, y, zと見えるように変えたものだ。下のコードは、実際に"x", “y”, “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

併せて見る