2013-08-06 12 views
6

私はmatplotlib.pyplotの基本的な知識とは別にプロットするPythonには初めてです。私の質問は、いくつかのより高度な多項式をプロットする方法ですか?私が見た1つの方法は、xの点でyを表現し、次に値をプロットすることでした。しかし、私は2つの困難があります:Pythonで多項式をプロットする

  1. yとxは分離できません。

    c0 + c1*x + c2*y +c3*x*x + c4*x*y + c5*y*y + c6*x**3 + c7*x**2*y + ..... c26*x*y**5 + c27*y**6 
    

    すべての係数c0からc27が知られている:

  2. は私が閉曲線(実際には複雑な曲線)

私はプロットにしようとしている多項式であることを期待しています。 この曲線をプロットするにはどうすればよいですか?

私はプロットと視覚化をPythonで学ぶことができる場所からリソースを教えてください。

説明: ご迷惑をおかけして申し訳ございません。サーフェスの方程式(x、y、zの3つの変数があります)ではありません。私は最後にゼロを置くべきだった:c0 + c1 * x + c2 * y + c3 * x * x + c4 * x * y + c5 * y * y + c6 * x ** 3 + c7 * x ** 2 * Y + ..... C26 * X * Y ** 5 + C27 * Y ** 6 = 0

+1

あなたがカーブを期待する場合は、多項式を0にして暗黙の方程式と見なすことができますか? 「多項式をプロットする」だけの場合は、2つの変数の関数なので、結果はサーフェスであり、プレーンカーブではありません。 –

+0

はい、私の質問を編集しました。混乱してごめんなさい – Ally

+1

あなたは[this](http://stackoverflow.com/questions/2484527/is-it-possible-to-plot-implicit-equations-using-matplotlib)SOの質問を見ているかもしれません。 * [sympy]のplot_implicit *関数(http://docs.sympy.org/dev/modules/plotting.html)。 –

答えて

5

私は、私は完全にあなたの質問を理解していないと確信している、私はあなたがsurface plot

をしたいと思います
import numpy as np 
import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 

x = np.arange(-5, 5, 0.25) 
y = np.arange(-5, 5, 0.25) 
X, Y = np.meshgrid(x, y) 
F = 3 + 2*X + 4*X*Y + 5*X*X 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
ax.plot_surface(X, Y, F) 
plt.show() 

とリソースのための:official documentationpyvideos

+1

多分少し* plt.show()*最後に欠けている? :-) –

+0

Yes :)私は 'ipython notebook --pylab = inline'を使ってすぐにそれを表示します。しかし、あなたがスクリプトを書いているなら、あなたはそれを必要とします。それを修正しました、ありがとう:) –

2

あなたの方程式は、あなたが最初にxy値のメッシュグリッドを作成するプロットすることができ、3D表面を表し、簡単にnumpyのを使用して達成:

X,Y = np.meshgrid(np.linspace(xmin, xmax, 100), np.linspace(ymin, ymax, 200)) 

XおよびYは、それぞれ、X座標およびY座標を含む2次元配列である。

次に、あなたが知られている係数を使用して、このメッシュの各点についてz値を計算することができます:あなたはmatplotlibを使用して、それをプロットすることができた後

Z = c0 + c1*X + c2*Y +c3*X*X + c4*X*Y + c5*Y*Y + c6*X**3 + c7*X**2*Y + ..... c26*X*Y**5 + c27*Y**6 

を:

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
ax = plt.subplot(111, projection='3d') 
ax.plot_surface(X, Y, Z) 
plt.show() 
関連する問題