matplotlib:刻度标签中的双换行符导致LaTeX错误

时间:2018-11-23 06:52:21

标签: python matplotlib label latex

尊敬的堆栈溢出社区

这是我第一次自己提出堆栈溢出问题,所以我希望我做对。

我使用以下代码段解释了我的问题。 我的目标是用相应的刻度线(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:运行,但轴标签不见了。
  • 用LaTeX换行符(\\)替换\ n \ n:插入一个空的中间行,但是现在刻度标签不再居中

完整的堆栈跟踪可以在这里找到: https://pastebin.com/E4enTBRh

0 个答案:

没有答案