2016-08-30 9 views
-1

私は現在、matplotlibで関数をプロットする方法をPythonで教えようとしていますが、私はむしろ単純なタスクに固執しています。関数f x)= 2x +3で、matplotlibの座標をプロットします。 Iは、X軸および-2から3までx値と関数に基づいてy値を計算する - Python

ザ・ハード・ウェイのx値に対するy値の両方のリストを作成し、手動計算により、本を苦労して解決した

import matplotlib.pyplot as plt 

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

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

これは機能します。

しかし、x値(-2〜3)と関数に基づいて、y値を迅速に取得する方法はありますか?

f(x) = 2x+3 

ご協力いただきありがとうございます。

+1

'デフf(x)が:return 2 * x + 3'は良いスタートになるでしょう、まだ関数について学んだことがありますか? –

+0

'y = [2 * val + 3 for val for x]'はどうですか? – FamousJameous

答えて

0

この場合、lambda関数は非常に便利です。 f = lambda x: 2*x + 3を使用して関数を宣言できます。 map関数を使用すると、すべてのy値を簡単な方法で取得することができます。y = map(f, x)ここで

lambdamapのドキュメントです:

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

+0

python 3 'map'はリストの代わりにジェネレータを返しますので、y配列として直接使うことはできません。代わりにlist comprehensionを使うことをお勧めします:' [f in 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

コードについて何も説明しない場合は、少なくともいくつかのコメントを書いてください。 –

関連する問題