matplotlibでピース単位の関数を描画しようとしています。 (亜美の答えhereに基づいています)私のフィルタリングアプローチは動作しません:Pythonでピース単位の関数をプロットする
ValueError: x and y must have same first dimension
あなたは、問題を解決してくださいもらえますか?
import numpy as np
import matplotlib.pyplot as plt
gK_inf = 7.06
gK_0 = 0.09
tauN = 0.75
gK_inf1 = 0.09
gK_01 = 7.06
tauN1 = 1.1
def graph(formula, formula1, t_range):
t = np.fromiter(t_range, np.float)
gK = formula(t)
gK1 = formula1(t)
plt.plot(t,gK)
plt.plot(t,gK1)
plt.xlabel(r"$t(msec.)$")
plt.ylabel(r"$g_K$")
plt.show()
def my_formula(t):
if np.all(t>0) and np.all(t<5):
return np.power((np.power(gK_inf,0.25))-((np.power(gK_inf,0.25)-np.power(gK_0,0.25))*np.exp(-t/tauN)),4)
else:
return 0
def my_formula1(t):
if np.all(t>5) and np.all(t<10):
return np.power((np.power(gK_inf1,0.25))-((np.power(gK_inf1,0.25)-np.power(gK_01,0.25))*np.exp(-t/tauN1)),4)
else:
return 0
graph(my_formula, my_formula1, np.arange(0,10,0.1))
更新:
は@Michaelのアドバイスによると、エラーが削除されますが、それがなければなりませんどのような結果ではありません。
実際、formula
とformula1
範囲[0,5]
および[5,10]
にそれぞれプロットする必要があります。
これは私が必要なものである:
アップデートのプロットは期待される出力ですか?それで、私は青い曲線に対して 'np.all'と' return 0'を使う理由は分かりません(t> 5ではゼロにはなりません)。エラーメッセージを修正する以外に、あなたが望むものをより詳細に指定してください。 – Michael
@Michael:そうです。私のコードのロジックは、それが想定されているものではありません。私はあなたがそれを親切にチェックするならば、私が必要とするものを説明するためにスケッチを追加しました。 – Roboticist
OK *ワンカーブが必要です。私は今それを得ると思います。私はそれを試してから、私の答えを編集するつもりです。 – Michael