除了matplotlib.pyplot
的一些基本知识之外,我是Python新手。我的问题是如何绘制一些更高次多项式?我看到的一种方法是用x表示y,然后绘制值。但我有两个困难:
我想绘制的多项式是:
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
都是已知的。
如何绘制此曲线?
您还可以向我推荐一些资源,我可以从中学习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
答案 0 :(得分: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()
答案 1 :(得分:2)
您的等式代表一个3D表面,您可以绘制首先创建x
和y
值的网格,可以使用numpy轻松实现:
X,Y = np.meshgrid( np.linspace( xmin, xmax, 100), np.linspace( ymin, ymax, 200) )
X
和Y
都是包含X和Y坐标的2D数组。
然后,您可以使用已知系数计算此网格中每个点的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()