kma*_*n29 6 python matplotlib python-2.7
我试图绘制一个简单的抛物线matplotlib,我很困惑,我应该如何在抛物线上绘制点.到目前为止,这就是我所拥有的:
import matplotlib.pyplot as plt
a=[]
b=[]
y=0
x=-50
while x in range(-50,50,1):
y=x^2+2*x+2
a=[x]
b=[y]
fig= plt.figure()
axes=fig.add_subplot(111)
axes.plot(a,b)
plt.show()
x= x+1
Run Code Online (Sandbox Code Playgroud)
这是你的方法,尽可能少的改变使它工作(因为很明显你是一个初学者,这是一个学习练习).我所做的改变是:
将plt.figure其他绘图语句移出循环.循环现在为您提供要绘制的数据,然后在循环结束后绘制它.
改x^2到x**2.
在主循环控制语句中更改while为for.
注释掉了一些没有做任何事情的行.它们都有相同的错误源(或非实用的,真的):在for循环中,x在循环控制行中设置然后y直接计算,所以你不需要给它们初始值或增量x,虽然你将不得不为while循环执行这些步骤.

这里的代码:
import matplotlib.pyplot as plt
a=[]
b=[]
# y=0
# x=-50
for x in range(-50,50,1):
y=x**2+2*x+2
a.append(x)
b.append(y)
#x= x+1
fig= plt.figure()
axes=fig.add_subplot(111)
axes.plot(a,b)
plt.show()
Run Code Online (Sandbox Code Playgroud)
应该这样做:
import matplotlib.pyplot as plt
import numpy as np
# create 1000 equally spaced points between -10 and 10
x = np.linspace(-10, 10, 1000)
# calculate the y value for each element of the x vector
y = x**2 + 2*x + 2
fig, ax = plt.subplots()
ax.plot(x, y)
Run Code Online (Sandbox Code Playgroud)