Неправильное смещение при использовании математического режима и подписок в 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')
Вот результаты (все выглядят немного иначе):