matplotlib 输入中的图形方程

6jygbczu  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(114)

我试图在Python 3.6中使用matplotlib显示一个带有用户公式的图形,但我遇到了一些问题。

import numpy as np
import matplotlib.pyplot as plt

def graph(x_range):
    x = np.array(x_range)
    y = 2*x
    plt.plot(x, y)
    plt.show()

graph(range(-10, 11))

它工作正常,但是如果我尝试用y = input()替换y = 2*x,并尝试在终端中输入2*x,我会得到一个错误,声明为ValueError: Illegal format string "2*x"; two marker symbols
有什么想法来解决这个错误,或者有没有更好的方法来绘制用户给出的方程?
谢谢

voj3qocg

voj3qocg1#

y=2*x替换为

y = eval(input('Enter formula'))

这是一个非常肮脏的捷径。

jaql4c8m

jaql4c8m2#

如果你正在寻找一个“适合你的情况”的轻量级方法,并且不计算“所有的数学表达式”,那么白名单方法可能会很好地为你服务

x = np.array(x_range)

print('equation types')
print('1) y=mx+b')
print('2) y=a*sin(b*(x+c))')
print('3) y=ax^2 + bx + c')
#...etc.

eq = int(input('equation type number: '))

if eq == 1:
    m = float(input('m'))
    b = float(input('b'))
    y = m*x+b
if eq == 2:
    #...etc.

plt.plot(x, y)
plt.show()

相关问题