【发布时间】:2013-03-03 18:38:36
【问题描述】:
我是 Python 新手。我一直在努力让自己熟悉 Numpy、Scipy 和 Matplotlib,因为我有科学背景,并希望让自己成为在神经科学实验室工作的更有竞争力的候选人。
我一直在浏览 Matplotlib 文档,尝试通过示例学习。我将从以下 URL 中引用一个示例:http://matplotlib.org/users/pyplot_tutorial.html
我的印象是这些示例是用 Python 3.x 编写的,我遇到了麻烦,因为我使用的是 Python 2.7。我正在使用 2.7,因为我想要的一些库不适用于 3.x。
该网站给出了使用子图的示例。他们的代码如下:
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”与函数“f(t)”分开定义。
我的第二个也是主要问题:有人可以解释为什么必须单独定义“f”吗?如何在 Python 2.7 中正确使用此类函数?
如果有人需要我解释这里使用的 Numpy/Matplotlib 机制,我会尽力解释它们是如何产生图表的。
【问题讨论】:
-
您粘贴的代码在 Python 2.7 中对我来说很好用。你确定你没有犯一些小错误吗?有时省略括号或类似的东西可能会导致程序稍后出现令人费解的语法错误。另外,您如何将代码输入IDLE?我认为您不能将多行 sn-ps 直接粘贴到 IDLE 中。您是否尝试使用这些命令创建文件然后运行它?
标签: python function numpy python-2.7 matplotlib