在matplotlib中绘制多条曲线/ python
问题描述:
我想绘制下面定义的三条不同曲线(修改后的NACA轮廓),但是我已经实现的代码为f(y)生成了与f(w)相同的结果, F(z)表示。曲线导致3次相同的曲线。任何人都可以指出我出错的地方吗?在matplotlib中绘制多条曲线/ python
干杯。
import sympy as sy
import numpy as np
import matplotlib.pyplot as plt
x, z, w, a0, a1, a2, a3, n, c, = symbols('x z w a0 a1 a2 a3 n c ')
def f(x):
return 2.2268*(x)**(1/2)+2.6295*x-0.0217*(x)**2+5.7406*10**(-5)*(x)**3
def f(z):
return 2.2268*(z)**(1/2)+1.5821*z-8.2664*10**(-3)*(z)**2+1.3718*10**(-5)*(z)**3
def f(w):
return 2.2268*(w)**(1/2)+1.1139*w-4.2846*10**(-3)*(w)**2+5.1828*10**(-6)*(w)**3
x = np.arange(0., 300, 0.01)
y = np.arange(0., 300, 0.01)
z = np.arange(0., 300, 0.01)
w = np.arange(0., 300, 0.01)
plt.plot(x, f(x),)
plt.show()
plt.plot(z, f(z),)
plt.show()
plt.plot(w, f(w),)
plt.show()
plt.plot(x, f(x), z, f(z), w, f(w),)
plt.show()
答
函数仅以其名称引用。就Python而言,使用不同的输入参数集并不会使其成为唯一的函数。因此,每次声明函数f时,都会覆盖以前的版本。因此,最后你只剩下f(w),并且这对你所有的图重复地被调用。
解决这个问题的最简单的办法就是给你的功能不同的名字:
import sympy as sy
import numpy as np
import matplotlib.pyplot as plt
x, z, w, a0, a1, a2, a3, n, c, = sy.symbols('x z w a0 a1 a2 a3 n c ')
def f(x):
return 2.2268*(x)**(1/2)+2.6295*x-0.0217*(x)**2+5.7406*10**(-5)*(x)**3
def g(z):
return 2.2268*(z)**(1/2)+1.5821*z-8.2664*10**(-3)*(z)**2+1.3718*10**(-5)*(z)**3
def h(w):
return 2.2268*(w)**(1/2)+1.1139*w-4.2846*10**(-3)*(w)**2+5.1828*10**(-6)*(w)**3
x = np.arange(0., 300, 0.01)
y = np.arange(0., 300, 0.01)
z = np.arange(0., 300, 0.01)
w = np.arange(0., 300, 0.01)
plt.plot(x, f(x),)
plt.show()
plt.plot(z, g(z),)
plt.show()
plt.plot(w, h(w),)
plt.show()
plt.plot(x, f(x), z, g(z), w, h(w),)
plt.show()
现在,这意味着它也将有可能重新使用X作为输入的不同功能,但随后的象征表示可能不完全是你想要的(假设这是一个缩短的例子,因为符号在这里没有实际使用)。
非常感谢您花时间回复这样一个简单的问题。你的建议解决了这个问题。干杯 – chopboy