Неправильное смещение при использовании математического режима и подписок в Matplotlib и OSX

У меня есть несколько графиков, где я хотел бы использовать подиндексы в некоторых ярлыках, но всякий раз, когда я использую математический режим, все ярлыки отображаются смещенными. Могу ли я установить смещение для всех моих ярлыков? Есть ли что-то, что мне не хватает в математическом режиме?

Это график без математического режима в метках: введите описание изображения здесь

И вот как это выглядит в математическом режиме (обратите внимание на галочки): введите описание изображения здесь

Для справки вот мой полный код (я получил код с накоплением):

import numpy as NP
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
import matplotlib.cm as cm
data = '''0    0    0    0    0    0    0    0
0    0    0    0    0    0    0.015    0.015
0    0    0    0    0    0    0    0
0    0    0    0    0.04    0.04    0    0
0    0    0    0    0.03    0.01    0.19    0.14
0    0    0.772    0    0.07    0.01    0.12    0.11
0    0.879    0    0    0    0.07    0    0.085
0.056    0    0    0    0    0    0    0
'''.splitlines()
data = tuple(reversed([NP.array([float(j) for j in i.split('    ')]) for i in data]))
colors = cm.rainbow(NP.linspace(0, 1, 8))
axes = plt.figure().add_subplot(111)
axes.set_xticklabels([r'$m_%d$'%i for i in ([i+1 for i in range(8)])])
plt.stackplot(NP.arange(8)+1,
          data, 
          colors=colors)
plt.xlim(1,8)
plt.ylabel("Error")  
plt.legend([mpatches.Patch(color=i) for i in colors], 
           [r'$m_%d$'%i for i in ([i+1 for i in range(8)])])
plt.show()

Обновление: проблема заключалась в бэкэнде, используемом для интерактивного отображения

Следуя подсказкам, приведенным в комментариях, я попытался записать файл, и ярлыки отображаются правильно. Кажется, проблема в бэкэнде MacOSX.

  • Python 2.7.9 (по умолчанию, 11 декабря 2014 г., 02:36:08) [GCC 4.2.1 Совместимый Apple LLVM 5.1 (clang-503.0.40)] на darwin
  • Matplotlib.версия 1.4.3
  • matplotlib.get_backend () MacOSX

1 ответ

Решение

Кажется, есть ошибка в MacOSX для Matplotlib. Для ее решения мне пришлось переключить бэкэнд. Я попробовал несколько из FAQ ( http://matplotlib.org/faq/usage_faq.html), и я получил лучшие результаты, используя WXAgg. TkAgg был очень вялым, и WX НЕ поддерживает математический режим. Если кому-то интересно, код, который нужно добавить перед импортом pyplot:

import matplotlib
matplotlib.use('WXAgg')

Вот результаты (все выглядят немного иначе):

WXAgg

TkAgg

WX

Другие вопросы по тегам