matplotlib: двойной перевод строки в метке тика приводит к ошибке LaTeX - PullRequest
0 голосов
/ 23 ноября 2018

Уважаемое сообщество переполнения стека,

Это первый раз, когда я сам задаю вопрос переполнения стека, поэтому я надеюсь, что я делаю это правильно.

Я объясняю свою проблему, используя следующий фрагмент кода,Моя цель - создать два боксплота (boxplotData) с соответствующими отметками (ticks).Я использую LaTeX, чтобы набирать метки оси (rc('text', usetex=True)).Каждый тиковый ярлык должен занимать три строки, где последняя строка содержит количество точек данных на диаграмме.Вторая строка первой отметки должна быть пустой.

В первой отметке я хочу иметь пустую строку, и это проблема.

Когда я выполняюследующий код, я получаю сообщение об ошибке LaTeX was not able to process the following string: b''.

У вас есть какие-либо идеи, как решить проблему?

Фрагмент кода:

import matplotlib
import matplotlib.pyplot as plt
from matplotlib import rc
import numpy as np

rc('font',**{'family':'serif','serif':['Times']})
rc('text', usetex=True)
matplotlib.rcParams['text.latex.unicode']=True

boxplotData = [[1, 2, 3, 4], [5, 6, 7]]

# !!! Problematic label is ticks[0]
ticks = ["Data 1\n\n(N=%d)" % len(boxplotData[0]), 
         "Data\nwith second line\n(N=%d)" % len(boxplotData[1])]

plt.boxplot(boxplotData, positions=np.array(range(len(boxplotData))), sym='', widths=0.4)

plt.xticks(range(0, len(ticks)), ticks)

plt.show()

Решения, которые я пробовал:

  • Добавить пробел или \ quad между символами новой строки: выполняется, но метка оси пропала.
  • Заменить \ n \ n новой строкой LaTeX (\\): вставляет пустую промежуточную строку, но теперь метка тика больше не центрируется

Полная трассировка стека находится здесь:https://pastebin.com/E4enTBRh

...