2016-08-18 10 views
1

Я хочу выровнять равные знаки в matplotlib. Таким образом, я использую eqnarray среды в Matplotlib:Уменьшить расстояние между равными знаками с помощью латекса «eqnarray» -команда в matplotlib?

import matplotlib.pyplot as plt 
from matplotlib import rc 

rc('text', usetex=True) 
rc('font', size  = 7) 

fig = plt.figure(figsize=(3,2)) 
ax = fig.add_subplot(111)  

ax.text(0.5,0.5 ,r'\begin{eqnarray*}' +\ 
      r'M    &=& 0.95' + '\\\\' +\ 
      r'\xi    &=& 0.5' + '\\\\' +\ 
      r'\mu    &=& 0.1' + '\\\\' +\ 
      r'a/b    &=& 0' + '\\\\' +\ 
      r'\delta_{99}/L &=& 0' +\ 
      r'\end{eqnarray*}', 
      verticalalignment='center', 
      horizontalalignment='center') 

plt.savefig('output.pdf') 
plt.show() 

Результат выглядит следующим образом: enter image description here

Как я могу уменьшить интервал в непосредственной близости от знаков равенства?

+0

Вы можете заменить сырые строки 'r'M & = & 0,95' + '\\\\'' 'по r'M & = & 0.95 \\ '', это хорошая вещь в' r';) – Luis

+0

@Luis: Выглядит лучше в коде, но результат все тот же. – malohm

+0

Хорошо, получилось, что он работает с 'align', следуя этому подходу: https://stackoverflow.com/questions/30515888/align-latex-math-text-in-matplotlib-text-box – malohm

ответ

1

Вам необходимо загрузить пакет amsmath, чтобы использовать 'align'. Обсуждаются проблемы с пробелом в «eqnarray»: https://github.com/matplotlib/matplotlib/issues/4954. По крайней мере, в matplotlib 1.2.1 проблема не решена, я думаю.

Это должно дать тот же результат:

#!/usr/bin/python 
import matplotlib.pyplot as plt 

preamble = { 
    'text.usetex' : True, 
    'font.size' : 7, 
    'text.latex.preamble': [ 
     r'\usepackage{amsmath}', 
     ], 
    } 
plt.rcParams.update(preamble) 

fig = plt.figure(figsize=(3.,2.)) 
ax = fig.add_subplot(111) 

ax.text(0.5,0.5 ,r'\begin{align*}' +\ 
      r'M    &= 0.95 \\' +\ 
      r'\xi   &= 0.5 \\' +\ 
      r'\mu   &= 0.1 \\' +\ 
      r'a/b   &= 0 \\' +\ 
      r'\delta_{99}/L &= 0  ' +\ 
      r'\end{align*}', 
      verticalalignment='center', 
      horizontalalignment='center') 



plt.savefig('output.pdf') 
plt.show() 

enter image description here

 Смежные вопросы

  • Нет связанных вопросов^_^