在mathtext中将特定情况实现为wxbitmap函数

时间:2015-07-07 13:10:45

标签: python matplotlib bitmap wxpython latex

我正在显示这样的位图

enter image description here

使用代码:

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())

第一个代码段中的z1z3是值不断变化的列表,因此位图会不断更新。 一切正常。

问题出在以下情况:

案例1:

当其中一个系数为0时。

enter image description here

如果系数为0,我希望根本不显示术语0.00000x 2

案例2:

当系数为负时。

enter image description here

如果系数为负,我只需要+-2.12321,而不是-2.12321

案例3:

当所有系数都是整数时

我得到了这个 -

enter image description here

但我希望它像 -

enter image description here

任何帮助解决任何上述案例的行为都表示赞赏。如果有的话,我愿意以完全不同的方式实现这一点。

1 个答案:

答案 0 :(得分:0)

是的,我也注意到0 * x**2看起来不太好。我想你想要做的事情超出了像matplotlib这样的库的范围。

你需要的东西能够理解"数学公式,如Mathematica或Mathcad或......您最终会编写自己的输出格式化程序。

在python中我唯一想到的就是sympy库。它可以将公式呈现为文本,也可以简化公式。如果你想给它一个镜头,它还有一个PrettyPrinter渲染器为unicode感知终端输出unicode公式。

如果你可以使用相同的unicode字体(未经测试!),我认为它的输出可以在wxPython文本框中以1:1显示。