2015-05-31 347 views
0

我想在matplotlib中繪製一個簡單的拋物線,我很困惑我該如何繪製拋物線上的點。到目前爲止,這是我所:在Python中使用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 

回答

1

這應該這樣做:

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) 

mpl-plot

+0

我嘗試別的東西: – kman29

+0

進口matplotlib。pyplot作爲PLT 進口numpy的作爲NP XVAL = [] 利用yval = [] y = 0的 X = -50 而中的x範圍(-50,51,1): Y = X * X XVAL。追加(X) yval.append(Y) X = X + 1個 打印XVAL 打印利用yval plt.plot(XVAL,利用yval) plt.show() – kman29

+0

它的工作也是如此。 – kman29

4

這是用盡可能少的變化儘可能你的方法,使其工作(因爲很明顯你是初學者,這是一個學習練習)。我所做的更改爲:

  1. plt.figure和其他繪圖語句移出循環。該循環現在爲您提供要繪製的數據,然後在循環結束後繪製它。

  2. x^2更改爲x**2

  3. 在您的主循環控制語句中更改了whilefor

  4. 註釋掉了幾行沒做任何事的行。他們都有相同的錯誤來源(或非實用程序,真的):在for循環中,x在循環控制行中設置,然後y直接計算,因此您不需要給它們初始值或增量x,雖然你不得不在一段時間內完成這些步驟。

enter image description here

下面的代碼:

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() 
0

調整你的倒數第三行:

axes.plot(a,b, 'r-^') 

添加 'r-^' 將增加紅色三角形指向圖形。或者,您可以使用'b-o'。

注意:您應該包括引號。

對於不同的顏色,你可以使用'b' - 藍色; 'g' - 綠色; 'r' - 紅色; 'c' - 青色; 'm' - 品紅色; 'y' - 黃色; 'k' - 黑色; 'w' - 白色

- 在'r-^'或'b-o'中將分別創建連接三角形或圓的線。也就是說,沒有破折號,你最終會得到一個散點圖。

另外,有命令.... scatter(x,y)這將等同於 'r ^' 和 'b o'