如何在Matplotlib中使用Latex和Sympy在数学表达式中打印变量的内容?

时间:2018-08-18 14:28:56

标签: matplotlib pyqt latex sympy

我正在开发解决工程问题的软件。该软件应以漂亮的数学表达式格式为用户打印计算结果。我在PyQt中使用了Matplotlib,Latex和Sympy,并成功完成了我想要的一切,除了以骨折的形式显示变量的值(请看下面的图片了解我的意思)。另外,我想知道如何控制乳胶文本的字体大小和样式(参见图片)。下面是代码的一部分。

看到这张图片

def Calculate(self):
    plt.rc('mathtext', fontset='cm')

    self.right_column_stiffness = int(self.lineEdit_3.text())
    self.left_column_stiffness = int(self.lineEdit_4.text())
    self.beam_load = int(self.lineEdit_4.text())

    w=self.beam_load*(1000/12)
    g=386.1
    self.mass = w/g

    formula=r'm=\frac{w}{g}='

    self.result_figure.text(.05, .85, r'${}$'.format(formula+latex(w)), fontsize=20)
    [enter image description here][1]        
    self.result_canvas.draw()

1 个答案:

答案 0 :(得分:1)

您曾问过两个问题:

  1. 分数的乳胶表示的字体大小可以通过两种方式更改。首先是用\displaystyle块包围分数乳胶代码。

    formula = r'm={\displaystyle\frac{w}{g}}' 
    

    其他选择是在下一行中将'${}$'更改为\[{}\]

    self.result_figure.text(.05, .85, r'\[{}\]'.format(formula+latex(w)), fontsize=20)
    
  2. 为了将变量中包含的值打印为分数而不是最终答案,您将必须手动构造另一个乳胶文本。

    value = r'${{\displaystyle\frac{result}{import matplotlib.pyplot as plt
    
    from matplotlib import rc   # Added these two lines
    rc('text', usetex=True)
    
    formula = r'm=\frac{{w}}{{g}} = \frac{{{0}}}{def binarySearch( a, l, r, num ):
    
        m = (l+r) // 2
    
        if l < r:
    
            if num <= a[m]:
                binarySearch(a, l, m, num)
            else:
                binarySearch(a, m+1, r, num)
    
        else:
    
            print( m )
    }'.format(100,20)
    
    plt.plot( [0,1,2,3], [0,1,2,3], '.')
    plt.text(1,1,r'\[{}\]'.format(formula),fontsize=20)
    plt.show()
    }}}$'.format(w,g)
    

这是我的示例代码:

bool XbusMessage_getDataItem(void* item, enum XsDataIdentifier id, struct XbusMessage const* message)
{
uint8_t const* raw = (getPointerToData(id, message->data, message->length));

给出以下结果的{{0}}