如何在Matplotlib中使用TeX时显示中文标题?

t2a7ltrp  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(121)

我打算画一个像这样的子情节:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,2*np.pi,1000)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.sin(pow(x,2))
plt.rc('font',size = 16,family = 'Simhei')
plt.rcParams['axes.unicode_minus'] = False
plt.rc('text',usetex = True)

pic1 = plt.subplot(2,2,1)
pic1.plot(x,y1,'r--',label = '$\sin{x}$'); pic1.legend()
pic1.set_title('第一个图像')

pic2 = plt.subplot(2,2,2)
pic2.plot(x,y2,'k--',label = '$\cos{x}$') ; pic2.legend()
pic2.set_title('第二个图像')

pic3 = plt.subplot(2,1,2)
pic3.plot(x,y3,'r--',label = '$\sin{(x^2)}$') ; pic3.legend()
pic3.set_title('第三个图像')
plt.show()

字符串
但它会返回如下错误:

(c:/texlive/2022/texmf-dist/tex/latex/type1cm/type1cm.sty)
(c:/texlive/2022/texmf-dist/tex/latex/cm-super/type1ec.sty
(c:/texlive/2022/texmf-dist/tex/latex/base/t1cmr.fd))
(c:/texlive/2022/texmf-dist/tex/latex/base/inputenc.sty)
(c:/texlive/2022/texmf-dist/tex/latex/geometry/geometry.sty
(c:/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty)
(c:/texlive/2022/texmf-dist/tex/generic/iftex/ifvtex.sty
(c:/texlive/2022/texmf-dist/tex/generic/iftex/iftex.sty)))
(c:/texlive/2022/texmf-dist/tex/latex/underscore/underscore.sty)
(c:/texlive/2022/texmf-dist/tex/latex/base/textcomp.sty)
(c:/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-dvips.def)
No file b09c0b82eaeea985330356c98a53236d.aux.
*geometry* driver: auto-detecting
*geometry* detected driver: dvips

! LaTeX Error: Unicode character 第 (U+7B2C)
               not set up for use with LaTeX.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...

l.29 {\rmfamily 第
                   $1$个图像}%
No pages of output.
Transcript written on tmpntafuhs9/b09c0b82eaeea985330356c98a53236d.log.


在LaTeX中,我知道我可以使用\usepackage{ctex}来解决这个问题,但我不能在matplotlib中处理它。我把标题变成了英文,它工作。但我需要一个使用TeX的中文标题

a8jjtwal

a8jjtwal1#

除了使用问题中突出显示的ctex包外,这项工作还需要LaTeX的味道,比pdfLaTeX更好地支持Unicode:理想地是XeLaTeX或LuaLaTeX。
Matplotlib允许您使用pgf backend来执行此操作。
本文档介绍了应添加到plt.rcParams的各种配置选项:关键的是:

  • pgf.texsystem:指定xelatex(默认值)、lualatexpdflatex
  • pgf.preamble:为要生成的LaTeX文档指定自定义前导。这可以包括\usepackage语句,因此可以使用ctex或任何其他相关包。

相关问题