【问题标题】:plotting multiple curves in matplotlib / python在 matplotlib / python 中绘制多条曲线
【发布时间】:2017-03-21 06:27:19
【问题描述】:

我正在尝试绘制下面定义的三个不同的曲线(修改后的 NACA 配置文件),但是我实现的代码为 f(y) 生成了与 f(w) 和 f(z) 相同的结果。这些图产生了 3 次相同的曲线。谁能指出我哪里出错了?

干杯。

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 python-3.x matplotlib sympy


    【解决方案1】:

    函数仅由其名称引用。就 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 作为输入,但是符号表示可能不是您想要的(假设这是一个缩短的示例,因为符号实际上并不是此处使用)。

    【讨论】:

    • 非常感谢您抽出宝贵时间回答这样一个直截了当的问题。你的建议解决了这个问题。干杯
    猜你喜欢
    • 2019-10-17
    • 1970-01-01
    • 2019-08-31
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    相关资源
    最近更新 更多