Observação
Clique aqui para baixar o código de exemplo completo
Renderização de texto com LaTeX #
Matplotlib pode usar LaTeX para renderizar texto. Isso é ativado definindo
em seu rcParams ou definindo a propriedade como True em objetos individuais. A manipulação de texto através do LaTeX é mais lenta do que o mathtext muito capaz do Matplotlib , mas é mais flexível, uma vez que diferentes pacotes LaTeX (pacotes de fontes, pacotes matemáticos, etc.) podem ser usados. Os resultados podem ser surpreendentes, especialmente quando você toma cuidado para usar as mesmas fontes em suas figuras como no documento principal.text.usetex : True
usetex
Text
O suporte LaTeX do Matplotlib requer uma instalação LaTeX funcional . Para os backends *Agg, o dvipng também é necessário; para o back-end PS,
PSfrag , dvips e Ghostscript também são necessários. Para back-ends PDF e SVG, se LuaTeX estiver presente, ele será usado para acelerar algumas etapas de pós-processamento, mas observe que ele não é usado para analisar a string TeX em si (somente LaTeX é suportado). Os executáveis para essas dependências externas devem estar todos localizados em seuPATH
.
Apenas um pequeno número de famílias de fontes (definidas pelo esquema PSNFSS ) é suportado. Eles estão listados aqui, com os comandos de seleção de fonte LaTeX correspondentes e pacotes LaTeX, que são usados automaticamente.
família genérica |
fontes |
---|---|
serifa ( |
Computer Modern Roman, Palatino ( |
sem serifa ( |
Computer Modern Serif, Helvetica ( |
cursiva ( |
Chancelaria Zapf ( |
monoespaço ( |
Computador Moderna Máquina de Escrever, Courier ( |
A família de fontes padrão (que não requer o carregamento de nenhum pacote LaTeX) é Computer Modern. Todas as outras famílias são fontes da Adobe. Times e Palatino têm suas próprias fontes matemáticas acompanhantes, enquanto as outras fontes Adobe serif fazem uso das fontes matemáticas Computer Modern.
Para ativar o LaTeX e selecionar uma fonte, use, por exemplo:
plt.rcParams.update({
"text.usetex": True,
"font.family": "Helvetica"
})
ou de forma equivalente, defina seu matplotlibrc para:
text.usetex : true
font.family : Helvetica
Também é possível definir font.family
um dos nomes de família genéricos e, em seguida, configurar a família genérica correspondente; por exemplo:
plt.rcParams.update({
"text.usetex": True,
"font.family": "sans-serif",
"font.sans-serif": "Helvetica",
})
(essa era a abordagem necessária até o Matplotlib 3.5).
Aqui está o exemplo padrão, renderizando equações matemáticas usando o TeX :
Observe que o modo de exibição matemática ( ) não é suportado, mas adicionar o comando , como na demonstração acima, produzirá os mesmos resultados.$$ e=mc^2 $$
\displaystyle
Caracteres não-ASCII (por exemplo, o sinal de grau no rótulo y acima) são suportados na medida em que são suportados por inputenc .
Observação
Para consistência com o caso não-usetex, o Matplotlib cria novas linhas em casos especiais, de modo que as novas linhas produzam quebras de linha (em vez de serem interpretadas como espaços em branco no LaTeX padrão).
Matplotlib usa o pacote sublinhado_
para que os sublinhados ( ) sejam impressos "como estão" no modo de texto (em vez de causar um erro como no LaTeX padrão). Os sublinhados ainda introduzem subscritos no modo matemático.
Observação
Certos caracteres requerem escape especial no TeX, como:
# $ % & ~ ^ \ { } \( \) \[ \]
Portanto, esses caracteres se comportarão de maneira diferente dependendo de
rcParams["text.usetex"]
(padrão: False
). Conforme observado acima, sublinhados ( _
) não exigem escape fora do modo matemático.
Opções PostScript #
Para produzir arquivos PostScript (EPS) encapsulados que podem ser incorporados em um novo documento LaTeX, o comportamento padrão do Matplotlib é destilar a saída, o que remove alguns operadores PostScript usados pelo LaTeX que são ilegais em um arquivo EPS. Esta etapa produz resultados que podem ser inaceitáveis para alguns usuários, porque o texto é grosseiramente rasterizado e convertido em bitmaps, que não são escalonáveis como PostScript padrão, e o texto não é pesquisável. Uma solução alternativa é definir rcParams["ps.distiller.res"]
(padrão: 6000
) para um valor mais alto (talvez 6000) nas configurações do rc, o que produzirá arquivos maiores, mas pode parecer melhor e dimensionar razoavelmente. Uma solução alternativa melhor, que requer Poppler ou Xpdf , pode ser ativada alterando rcParams["ps.usedistiller"]
(padrão: None
) paraxpdf
. Essa alternativa produz PostScript sem rasterizar o texto, portanto, ele é dimensionado corretamente, pode ser editado no Adobe Illustrator e pesquisado em documentos PDF.
Possíveis interrupções #
No Windows, o
PATH
A variável de ambiente pode precisar ser modificada para incluir os diretórios que contêm os executáveis latex, dvipng e ghostscript. Consulte Variáveis de ambiente e Definindo variáveis de ambiente no Windows para obter detalhes.Usando MiKTeX com fontes Computer Modern, se você obtiver resultados estranhos *Agg e PNG, vá para MiKTeX/Options e atualize seus arquivos de formato
No Ubuntu e no Gentoo, a instalação base do texlive não vem com o pacote type1cm. Você pode precisar instalar alguns dos pacotes extras para obter todos os recursos que vêm junto com outras distribuições do LaTeX.
Algum progresso foi feito para que o Matplotlib use os arquivos dvi diretamente para o layout do texto. Isso permite que o LaTeX seja usado para layout de texto com os back-ends pdf e svg, bem como os back-ends *Agg e PS. No futuro, uma instalação do LaTeX pode ser a única dependência externa.
Solução de problemas #
Tente excluir seu
.matplotlib/tex.cache
diretório. Se você não sabe onde encontrar.matplotlib
, consulte a configuração do matplotlib e os locais do diretório de cache .Certifique-se de que LaTeX, dvipng e ghostscript estão funcionando e no seu
PATH
.Certifique-se de que o que você está tentando fazer é possível em um documento LaTeX, que sua sintaxe LaTeX é válida e que você está usando strings brutas, se necessário, para evitar sequências de escape não intencionais.
rcParams["text.latex.preamble"]
(padrão:''
) não é oficialmente suportado. Essa opção oferece muita flexibilidade e muitas maneiras de causar problemas. Desative esta opção antes de relatar problemas à lista de discussão.Se ainda precisar de ajuda, consulte Como obter ajuda .