保存用Sympy显示的表达式的图像



我对Sympy还比较陌生,在这个网站上查找信息时遇到了很多麻烦。我的主要目标基本上是取一个字符串,表示一些数学表达式,然后以更干净的形式保存该表达式的图像

例如,如果这是表达式字符串:"2*x+(3-(4*9((";我希望它像这样显示更清晰的图像。

这是我目前为实现这一目标而编写的代码,基于我在StackExchange上读到的内容:

from matplotlib import pylab
from sympy.parsing.sympy_parser import parse_expr
from sympy.plotting import plot
from sympy.printing.preview import preview

class MathString:
def __init__(self, expression_str: str):
self.expression_str = expression_str
@property
def expression(self):
return parse_expr(self.expression_str)
def plot_expression(self):
return plot(self.expression)
def save_plot(self):
self.plot_expression().saveimage("imagePath", 
format='png')

然后使用一个主要功能:

def main():
test_expression = '2**x+(3-(4*9))'
test = MathString(test_expression)
test.save_plot()

main()

然而,当我运行main((时,它只是向我发送一个我提供的方程的实际图形图。我尝试了多种其他解决方案,但错误的范围从我的环境不支持LaTeX到我试图将表达式作为字符串传递。

请帮忙!我被卡住了,不明白我做错了什么!给定一个可以存储图像的特定地址路径,我如何使用Sympy/MatPlotLib/我可能需要的任何其他库来保存显示表达式的图像?

问题中的程序不会将表达式从字符串格式转换为CCD_ 1内部格式。请参阅以下示例。

此外,sympy还能够检测您的环境使用iPython 7.22终端,我得到了Unicode格式的输出。

from sympy import *
my_names = 'x'
x = symbols(','.join(my_names))
ns1 = {'x': x}
my_symbols = tuple(ns1.values())
es1 = '2**x+(3-(4*9))'
e1 = sympify(es1, locals=ns1)
e2 = sympify(es1, locals=ns1, evaluate=False)
print(f"String {es1} with symbols {my_symbols}",
f"ntmakes expression {e1}",
f"ntor expression {e2}")
# print(simplify(e1))
init_printing()
pprint(e2)

输出(Unicode(:

# String 2**x+(3-(4*9)) with symbols (x,)
#   makes expression 2**x - 33
#   or expression 2**x - 4*9 + 3
#  x
# 2  - 4⋅9 + 3

最新更新