我正在显示这样的位图
使用代码:
mt =r'$\frac{%.5fx^{2} + %.5fx + %.5f}{%.5fx^{2} + %.5fx + %.5f}$'%(self.z1[-3],self.z1[-2],self.z1[-1],self.z3[-3],self.z3[-2],self.z3[-1])
bm = mathtext_to_wxbitmap(mt)
self.picture.SetBitmap(bm)
此处函数mathtext_to_wxbitmap
实现为:
from matplotlib.mathtext import MathTextParser
mathtext_parser = MathTextParser("Bitmap")
def mathtext_to_wxbitmap(s):
ftimage, depth = mathtext_parser.parse(s, 150)
return wx.BitmapFromBufferRGBA(
ftimage.get_width(), ftimage.get_height(),
ftimage.as_rgba_str())
第一个代码段中的z1
和z3
是值不断变化的列表,因此位图会不断更新。 一切正常。
问题出在以下情况:
案例1:
当其中一个系数为0时。
如果系数为0,我希望根本不显示术语0.00000x
2
。
案例2:
当系数为负时。
如果系数为负,我只需要+-2.12321
,而不是-2.12321
。
案例3:
当所有系数都是整数时
我得到了这个 -
但我希望它像 -
任何帮助解决任何上述案例的行为都表示赞赏。如果有的话,我愿意以完全不同的方式实现这一点。
答案 0 :(得分:0)
是的,我也注意到0 * x**2
看起来不太好。我想你想要做的事情超出了像matplotlib这样的库的范围。
你需要的东西能够理解"数学公式,如Mathematica或Mathcad或......您最终会编写自己的输出格式化程序。
在python中我唯一想到的就是sympy库。它可以将公式呈现为文本,也可以简化公式。如果你想给它一个镜头,它还有一个PrettyPrinter渲染器为unicode感知终端输出unicode公式。
如果你可以使用相同的unicode字体(未经测试!),我认为它的输出可以在wxPython文本框中以1:1显示。