6

除了一些基本知识之外,我是 Python 绘图的新手matplotlib.pyplot。我的问题是如何绘制一些更高次的多项式?我看到的一种方法是用 x 表示 y,然后绘制值。但我有两个困难:

  1. y 和 x 不能分开。
  2. 我期待一条闭合曲线(实际上是一条复杂的曲线)

我试图绘制的多项式是:

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

所有系数c0c27已知。如何绘制这条曲线?

另外,您能否向我推荐一些可以在 Python 中学习绘图和可视化的资源?

澄清: 对不起大家没有说清楚。它不是一个曲面方程(涉及 3 个变量:x、y 和 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 =0

4

2 回答 2

6

我不确定我是否完全理解你的问题,但我认为你想要一个表面图

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

对于资源:官方文档pyvideos

于 2013-08-06T19:26:50.657 回答
2

您的方程表示一个 3D 表面,您可以绘制首先创建一个网格网格xy值,使用 numpy 轻松实现:

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

X并且Y都是分别包含 X 和 Y 坐标的二维数组。

然后您可以z使用已知系数计算此网格中每个点的值:

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

之后,您可以使用以下方法绘制它matplotlib

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()
于 2013-08-06T19:30:31.257 回答