matplotlib图的乳胶渲染文本的中心标题

时间:2019-05-29 11:41:34

标签: matplotlib latex

我想为Matplotlib图形的标题居中,该图形在呈现LaTeX样式时包括换行符(\)

可以在标题的中间插入一个简单的乳胶\\返回码,但不会使其居中,以便换行从第一行尴尬地移开。

from matplotlib import pyplot as plt
plt.rc('text', usetex=True)
plt.title(r"\center{\textbf{Some title \\ with with a newline}}")

plt.title(r"\begin{centering}{\textbf{Some title \\ with a newline}\end{centering}")

不起作用

当我输入之前引用的行时,在图上根本没有标题输出。我在python命令解释器上没有LaTeX错误。

2 个答案:

答案 0 :(得分:1)

您可以轻松地使用\nplt.title()中获取换行符:

import numpy as np
import matplotlib.pyplot as plt

plt.rc('text', usetex=True)

t = np.arange(0., 5., 0.2)

plt.plot(t, t/5000,)
plt.title(r"$\textbf{Some title}$"
          "\n"
          r"$\textbf{with a formula}:$"
          "\n"
          r"$y=t/5000$")
plt.show()

enter image description here

答案 1 :(得分:0)

假设您的系统上安装了合适的 LaTex,并且所有设置都在 matplotlib 中使用 LaTex,您必须设置一个特定的 LaTex 序言,其中 /begin{center} ... /end{center} 可用。

这是一个工作示例。

import numpy as np
import matplotlib
matplotlib.rcParams['text.usetex'] = True
import matplotlib.pyplot as plt

custom_preamble = {                                                                          
    "text.latex.preamble":                                                                   
        r"\usepackage{amsmath}" # for the align, center,... environment
        ,
    }   
plt.rcParams.update(custom_preamble)                                                         
plt.figure(figsize= (6,4),tight_layout = True)                                               

t = np.linspace(0.0, 1.0, 100)
s = np.cos(4 * np.pi * t) + 2
plt.plot(t, s,label='your legend')

plt.xlabel(r'\textbf{bold (s)}')                                                        
plt.ylabel('\\textit{italic (\N{DEGREE SIGN}/sec)}', fontsize=16)                   
plt.title(r'\begin{center}Your title\\ new line, centered: ($-e^{i\pi}$, centered\end{center}')                  
plt.legend()
plt.show()

这给出:

enter image description here