波形の伝送(等高線図)

モジュールのインポート

import numpy as np
import matplotlib.pyplot as plt
時間 $t$,伝送方向 $z$,波形の伝搬速度 $c$ として,電圧波形 $v(z,t)$ が次式で与えられる場合を考える. \begin{gather} v(z,t) = \sin \left( t-zc \right) \end{gather}
def funcv(t,zc):
    return np.sin(t-zc)
$v(z,t)$ が単一周期で伝送される場合,2変数 $z,t$ に対して,
n = 101
t = np.linspace(0, 20, n)
zc = np.linspace(0, 20, n)
X,Y = np.meshgrid(zc, t)
V = funcv(X, Y)
Z = Y-X
pi2 = 2.0*np.pi
V = np.where(Z <= 0.0, 0.0, V)
V = np.where(Z >= pi2, 0.0, V)
$z/c$, $t$ に対して等高線図としてプロットすると,
fig = plt.figure(figsize=(9, 9)) # グラフ領域の作成
v = np.linspace(-1, 1, 41)
ax = plt.contour(X, Y, V, 3, linewidths=0.6) # 等高線表示
ax.clabel(fmt='%1.1f', inline=1, fontsize=10) # 等高線の値を表示
plt.contourf(X, Y, V, levels=v, cmap="Blues")
plt.axis('square')
plt.xlabel("$z/c$ [s]")
plt.ylabel("$t$ [s]")
plt.xticks(np.arange(0,25,5))
plt.yticks(np.arange(0,25,5))
ax1 = plt.colorbar(pad=0.1, shrink=0.68, orientation="vertical")
ax1.set_label(r"$v(z,t)$")
plt.tight_layout()
fig.savefig('Fig_2_5_contnour_sin_.pdf')
plt.show()

プロットのスタイルを変えるため次のようにインポートして等高線図を描くと(pythonコードは同様のため省略),
import scienceplots
#Warning : As of version 2.0.0, you need to add import scienceplots before setting the style (plt.style.use('science')).
plt.style.use(['science', 'notebook'])