0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Julia 小ネタ集

Last updated at Posted at 2024-09-01

Juliaという言語がなかなか楽しいのですが、新しく触れる言語かつ解説もそこまで多くないため、つまづくところが多いです。
そこで初心者の備忘録として、トライアンドエラーで得た知識を書いていきます。内容は思いつき次第更新で。より良いやり方や認識間違いなどの突っ込み大歓迎です。

Plots 複数ヒストグラムの幅を揃えたい

事象

using Plots

data1 = rand(100) .+ 2
data2 = rand(100) .* 3 .+ 1

plt = plot()
histogram!(plt, data1, alpha=0.3, bins=20)
histogram!(plt, data2, alpha=0.3, bins=20)

graph1.png

matplotlibでもありがちだけど、分散や最大最小値が異なる二つの分布を重ねると棒の幅などが揃わず、コレジャナイ感満載のヒストグラムができやすい。

解決策

StatsBaseのfit関数を使う。
あらかじめPkgからadd StatsBaseしておく。

using Plots
using StatsBase

data1 = rand(100) .+ 2
data2 = rand(100) .* 3 .+ 1

hist1 = fit(Histogram, data1, 0:0.2:5)
hist2 = fit(Histogram, data2, 0:0.2:5)

plt = plot()
plot!(hist1, alpha=0.3)
plot!(hist2, alpha=0.3)

fitの第1引数はHistogram固定。第3引数にヒストグラムの最小値:差分:最大値を指定する。
これでhist1, hist2は度数分布表になるので、これをplotやplot!に放り込んでやる。

graph2.png

より良い方法

…と書いたところ、別に新たなパッケージを導入せずとも、binsにRangeを指定することでのぞみのグラフが得られるとコメントいただきました(ありがとうございます)。

using Plots

data1 = rand(100) .+ 2
data2 = rand(100) .* 3 .+ 1

plt = plot()
histogram!(plt, data1, alpha=0.3, bins=1:0.2:4)
histogram!(plt, data2, alpha=0.3, bins=1:0.2:4)

こっちの方がずっとスッキリ。

予定

  • Plotのforを使った重ね書き
  • Vectorを重ねてMatrixを作るときのお作法
  • XLSXやCSV,Encode周り
  • 型の扱い
  • 入れておきたいパッケージ
0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?