標準分布のヒストグラムを作成し、平均、標準偏差、およびサンプルサイズが変更されたときにプロットを更新したいと思います。ポストに類似する。here。スライダの使用時にヒストグラムを更新するにはどうすればよいですか?
しかし、私はupdate
機能で苦労しています。
l, = plot(f(S, 1.0, 1.0))
と
def update(val):
l.set_ydata(f(S, sGmax.val, sKm.val))
上記の例で使用されているが、はどのようにこれはヒストグラムがプロットされたときに変更しなければなりませんか?だから、plt.hist
の戻り値をどのように使うのかよく分からず、update
に正しく渡してからプロットを更新してください。誰でもこれを説明できますか?
これは私のコードです:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
def update(val):
mv = smean.val
stdv = sstd.val
n_sample = round(sn.val)
# what needs to go here? how to replace xxx
xxx(np.random.normal(mv, stdv, n_sample))
plt.draw()
ax = plt.subplot(111)
plt.subplots_adjust(left=0.25, bottom=0.25)
m0 = -2.5
std0 = 1
n0 = 1000
n_bins0 = 20
nd = np.random.normal(m0, std0, n0)
# what needs to be returned here?
plt.hist(nd, normed=True, bins=n_bins0, alpha=0.5)
axcolor = 'lightgray'
axmean = plt.axes([0.25, 0.01, 0.65, 0.03], axisbg=axcolor)
axstd = plt.axes([0.25, 0.06, 0.65, 0.03], axisbg=axcolor)
axssize = plt.axes([0.25, 0.11, 0.65, 0.03], axisbg=axcolor)
smean = Slider(axmean, 'Mean', -5, 5, valinit=m0)
sstd = Slider(axstd, 'Std', 0.1, 10.0, valinit=std0)
sn = Slider(axssize, 'n_sample', 10, 10000, valinit=n0)
smean.on_changed(update)
sstd.on_changed(update)
sn.on_changed(update)
plt.show()
を再描画します、ticks、ticklabels)、 'ax.clear()' 'ax.hist()'の解決策よりも好きな点はありません。したがって、(簡単な)ソリューションのコードも提供したいと思うかもしれません。 – ImportanceOfBeingErnest
それは仕事を完了したようです、ありがとう(upvoted)!あなたが@ImportanceOfBeingErnestの提案に従ってコードを更新できるなら、私は非常に感謝しています。 – Cleb
私は例を追加しましたが、多くのバーを再描画すると、再描画が遅くなることがありますが、スライディングがブリッティングされているかどうかは分かりません。 –