20160607

1・subplotを使った4段のグラフ

import matplotlib.pyplot as plt
import numpy as np
import scipy.signal as sig

f1 = 10
f2 = 30
f3 = 90

samples = 1001

theta1 = np.linspace(0.0, f1*np.pi, samples)
theta2 = np.linspace(0.0, f2*np.pi, samples)
theta3 = np.linspace(0.0, f3*np.pi, samples)

taps = 31
lcf = 20
hcf = 40

x1 = np.linspace(0, 1, samples)
y1 = np.sin(theta1) + np.cos(theta2) + np.sin(theta3)

y2 = sig.firwin(taps, [lcf, hcf], pass_zero = False, nyq = 500.5)
x2 = np.linspace(0.0, 1.0/samples*len(y2),len(y2))

f,(ax1, ax2, ax3, ax4) = plt.subplots(4, 1, sharex = True)

ax1.plot(x1, y1)
ax2.plot(x2, y2)

plt.show()
figure_1-1.png
1段目で解析対象。
2段目でフィルタ右に動く。一マス動くごとに止まって、畳み込み和の要素を一つ一つ数えていく。
3段目に、ムービーでどんどん増えていく畳み込み和の要素。
4段目に、これまでの畳み込み和のプロットと、3段目の総和計算の増減に応じて、上昇(下降)する値。
とする予定。

また、subplotを横に別に用意して、LaTeXで目まぐるしく、式を動かす。


だけど、このままでは、
フィルタの
3段目の各項の一つ一つに着目できない。
着目できないなら、総和を動画で見せる意味もかなり薄れる。

あのΣの式を
「ここではかけ算してるよ」「ここでは足し算してるよ」
「立ち返ってΣの式を見たとき、どの部分がどの動作に対応しているか、納得できますな」
のレベルまで下げたい。


plt.plot(x2, y2)
plt.show()
figure_1.png
この、かくかく感がいい。
いかにも折れ線グラフですよ感。
この折れ線グラフを拡大したほうがいい。
tapの大きさが、プロットできる最大幅にしたほうがいい。
しかも、そのプロット一つ一つに、数字を割り振る。

ななめにかかる線に意味はないので、棒グラフの線版みたいな奴の方が、離散数字の計算には合っている気がするが、あの棒グラフ的なあれ、いきなり見せられても、ぽかーんとなるだけだから。

plt.plot(x2,y2,"ow")
plt.vlines(x2,[0],y2,lw=2)
plt.show()
これね、もう。。。
figure_1-2.png
たしかに、間には何の数字もないけどさぁ...良く分からないよそこまでこだわる理由が。

ちなみに、vlinesの他にhlinesもある。
Horizontal, verticalの違いだろう。
水平、垂直。
http://matplotlib.org/examples/pylab_examples/stem_plot.html
ちょっと違うけど、stemというのもあるらしい。

今日は、予定外に頑張れてしまった。
新しいグラフとかが、すんなり描けて、面白かったのだろうと思う。
明日は、ax3(グラフの3段目)に関して、ちょろっと考える程度でいいや。
posted by yuchan at 07:00 | Comment(1) | python