Python 2.7.11,Win 7,x64,Numpy 1.10.4,matplotlib 1.5.1
在命令行输入%matplotlib qt
后,我从iPython控制台运行了以下脚本
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import axes3d
import numpy as np
number = input("Number: ")
coords = np.array(np.random.randint(0, number, (number, 3)))
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(coords[:,0], coords[:,1], coords[:,2])
plt.show()
它在3D中绘制随机散射图。所以我认为将它放入while循环和放大器是一件小事。获得每次迭代的新数据。
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import axes3d
import numpy as np
s = True
while s:
number = input("Number: ")
coords = np.array(np.random.randint(0, number, (number, 3)))
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(coords[:,0], coords[:,1], coords[:,2])
plt.show()
cont = input("Continue? (y/n)")
if cont == 'n':
s = False
......但数字只是空白&在我输入cont
的输入之前没有反应,我得到了,
NameError:名称'y'未定义
......整个事情都崩溃了。
那我在这里错过了什么?
编辑:考虑到Aquatically challenged的答案如下。数字仍然会挂起,直到退出循环,然后它们都会同时绘制。有人知道为什么这些图没有在循环内完成吗?
答案 0 :(得分:1)
我没有复制,但是当您输入'y'
或'n'
时。尝试将单引号(或双引号)设为y
或n
输入不带引号的字符串。使用raw_input
代替input
如此处所述Python 2.7 getting user input and manipulating as string without quotations
答案 1 :(得分:1)
input
尝试eval
您键入的字符串,将其视为Python代码,然后返回评估结果。例如,如果result = input()
我输入2 + abs(-3)
,则result
将等于5
。
输入字符串y
时,会将其视为变量名称。由于您尚未定义任何名为y
的变量,因此您将获得NameError
。而不是input
您想要使用raw_input
,它只返回输入字符串而不尝试评估它。
为了让你的数字在while循环中显示,你需要插入一个短暂的暂停,以便在继续执行while
循环之前绘制图形的内容。您可以使用plt.pause
,它还负责更新活动数字。
s = True
while s:
number = input("Number: ")
coords = np.array(np.random.randint(0, number, (number, 3)))
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(coords[:,0], coords[:,1], coords[:,2])
plt.pause(0.1)
cont = raw_input("Continue? (y/n)")
if cont == 'n':
s = False