私はPythonを初めて使用します。私は科学のバックグラウンドを持っているので、Numpy、Scipy、およびMatplotlibに慣れようとしており、神経科学研究所での仕事のより競争力のある候補になることを望んでいます。
私は例で学ぼうとして、Matplotlibのドキュメントを閲覧してきました。次のURLから例を参照します:http://matplotlib.org/users/pyplot_tutorial.html
これらの例はPython3.xで記述されており、Python 2.7を使用しているため、問題が発生しているという印象を受けます。必要なライブラリの一部が3.xで使用できなかったため、2.7を使用しています。
Webサイトには、サブプロットの使用例が示されています。それらのコードは次のとおりです。
import numpy as np
import matplotlib.pyplot as plt
def f(t):
return np.exp(-t) * np.cos(2*np.pi*t)
t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)
plt.figure(1)
plt.subplot(211)
plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')
plt.subplot(212)
plt.plot(t2, np.cos(2*np.pi*t2), 'r--')
これは次のような図を返すことになっています:http: //i.stack.imgur.com/ejNDu.png
同じコードをIDLEにコピーすると、エラーが発生します。ライン上
t1 = np.arange(0.0, 5.0, 0.1)
、IDLEは、「t1」は無効な構文であると教えてくれます。
私の最初の質問: t1を変数として使用することの問題は何ですか?
同様のコードをコピーしますが、いくつかの調整を加えることで、このエラーを回避できます。ただし、別のエラーが表示されます。に相当する行を追加すると
plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')
、IDLEはエラーを表示します:
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
plt.plot(ty, f(tx), 'bo', ty, f(ty), 'k')
NameError: name 'f' is not defined
Pythonが関数「f(t)」とは別に「f」を定義することをどのように期待しているかわかりません。
私の2番目の主な質問:「f」を個別に定義する必要がある理由を誰かに説明してもらえますか?Python 2.7でこのような関数を正しく使用するにはどうすればよいですか?
ここで使用されているNumpy/Matplotlibメカニズムについて説明する必要がある場合は、グラフを作成するためにそれらがどのように機能するかを説明するために最善を尽くします。