有没有办法在 python 中绘制"function string"?



示例:用户键入"(x^2 + 5)^3&";到终端,脚本会像WolframAlpha那样绘制函数。

有一个简单的方法在python中做到这一点吗?

函数可能包括abs(), sqrt()等

提前感谢您的回复

您可以尝试使用eval输入X或默认X:

import matplotlib.pyplot as plt
import numpy as np
import re

def get_variables(input_string):
count = 0
matches = re.findall(r'(?i)[a-z]', input_string)
return set(matches) #returns unique variables
function = input('Input Function: ')
variables = get_variables(function)
print(variables, type(variables), function)
varDict = {v: np.arange(100) for v in variables} #maps the variable names to some default range
for v in variables: #changes the function string to work with the newly defined variables
pattern = r'b%sb' %v
function = re.sub(pattern,r'varDict["%s"]' %v,function)
answer = eval(function) #evaluates the function

if len(variables) == 1:
plt.plot(*varDict.values(),answer) #plot the results, in this case two dimensional
else:
ax = plt.axes(projection="3d")
ax.plot3D(*varDict.values(),answer) # line
#ax.scatter3D(*varDict.values(),answer); #scatter

plt.show()

如果你想要散点图或添加逻辑来制作形状(即使用网格),你可以更改3d设置

只是要确保eval语句是完全消毒过的。这也要求以python语法输入函数(**而不是^),除非你想添加函数来编辑字符串中的常见语法差异。

相关内容

  • 没有找到相关文章

最新更新