2016-08-30 46 views
-1

我目前正試圖教自己如何在Python中用matplotlib繪製函數,而我被困在一個相當簡單的任務:給定一個函數f( x)= 2x +3,繪製matplotlib中的座標。基於x值和函數計算y值蟒蛇

我已經解決了這個硬盤的方式,通過手工計算,創建x和y的值都爲x值的列表,從-2到3

艱難的歷程

import matplotlib.pyplot as plt 

x = range(-2, 4) 
y = [-1, 1, 3, 5, 7, 9] 

plt.plot(x, y, 'ro') 
plt.show() 

This Works!

但是,有沒有辦法根據x值(從-2到3)快速獲得y值?

f(x) = 2x+3 

任何幫助,高度讚賞!

+1

'高清F(X) :返回2 * x + 3'會是一個好開始,您是否瞭解了函數? –

+0

'y = [2 * val + 3 for val in x]''? – FamousJameous

回答

0

lambda函數在這種情況下非常有用。您可以使用f = lambda x: 2*x + 3聲明您的功能。 map函數將以一種簡單的方式獲取所有y值的好方法:y = map(f, x)

這裏是lambda和文檔map

https://docs.python.org/2/reference/expressions.html#lambda https://docs.python.org/2/library/functions.html#map

+0

in python 3'map'返回一個生成器而不是一個列表,所以它不能直接作爲y數組使用,相反,我建議使用list comprehension:'[f(i)for i in x]' –

+0

這個是真的。如果你使用python 3,那麼列表理解將是最好的方法。 –

+0

理解在兩個版本中都可以使用,但'map'只能在vs2中使用,所以通常我會說理解更可靠。由於這個問題沒有標記特定的版本標籤,你需要建議適用於兩者的選項。 –

0

這裏有一個簡單的方法在一定範圍[A,B]內繪製你的函數:

import numpy as np 
import matplotlib.pyplot as plt 


def graph(formula, x_range): 
    x = np.array(x_range) 
    y = formula(x) 
    plt.plot(x, y) 
    plt.show() 


def f(x): 
    return 2 * x + 3 

A, B = -10, 10 
graph(f, range(A, B)) 
+0

如果你不打算解釋你的代碼的任何內容,你至少可以提出一些評論。 –