たけのこブログ

凡人が頑張って背伸びするブログ

Juliaでプロットするときに右側のy軸がはみ出ててしまったときの対処法

概要

最近、ジャーナルもアクセプトされたり新規の業務委託の内定を頂いたりと、不安だった出来事が解消されていきました。 二ヶ月以上もブログを更新しなかったのは久しぶりなのですが、今後は少しずつ更新頻度を増やしていきたいと思います。以降しばらくは、ウォーミングアップ的な感じで簡単な内容を載せていきたいと思います。

さて、今回はJuliaでプロットするときに右側のy軸がはみ出してしまう時の対処法です(こちらのissuesを参考にしました)。

github.com

例えば、あるsinusoidal inputの発火率に従って、非定常ポアソン過程によって生成されたスパイクと実際の入力をプロットしてみます。すると、右側のy軸がはみ出してしまいました。

dt = 0.01
StopTime=600
t = [0:dt:StopTime;]
spike_inds = Tuple.(findall(x -> x > 0, spikes)) # 行列内で0を超えてるスパイクのインデックスの要素を取得
spike_time = first.(spike_inds) # スパイク時系列
neuron_inds = last.(spike_inds) # 神経の番号(1~n_neurons)
plot(spike_time, neuron_inds ,st=:scatter,markersize=0.1,color="black")
p1 = plot!(twinx(),inputs, color="blue", ylim=(0,600))
plot(p1,
    xlabel = "Times (ms)", 
    layout = grid(1, 1, heights=[1]), guidefont=font(), legend=false, size=(600,300))

f:id:YuKR:20210831170728p:plain

こちらに関してですが、プロットするときにleft_margin, right_marginを設定すれば簡単に対処することができます。ついでにx軸のラベルも少々大きくてはみ出しているので、guidefont=font(8)と設定して修正します。また、ytickfont=font(7)としてy軸の値のフォントの大きさも小さくしてみました。

dt = 0.01
StopTime=600
t = [0:dt:StopTime;]

spike_inds = Tuple.(findall(x -> x > 0, spikes)) # 行列内で0を超えてるスパイクのインデックスの要素を取得
spike_time = first.(spike_inds).*dt # スパイク時系列
neuron_inds = last.(spike_inds) # 神経の番号(1~n_neurons)
plot(spike_time, neuron_inds ,st=:scatter,markersize=0.1,color="black", ytickfont=font(7))
p1 = plot!(twinx(),t,inputs, color="blue", ylim=(0,400), ytickfont=font(7))
plot(p1,
    xlabel = "Times (ms)", 
    layout = grid(1, 1, heights=[1]), guidefont=font(8), legend=false, size=(600,300),
    left_margin = 5Plots.mm, right_margin = 15Plots.mm)

結果は以下の通りです。はみ出すことなく、綺麗にプロットすることができました。

f:id:YuKR:20210831171045p:plain