配置 Matplotlib 图形大小,以便图形中的字体与文本中的字体匹配

配置 Matplotlib 图形大小,以便图形中的字体与文本中的字体匹配

我想配置 Matplotlib 生成的图形的大小,以便图形中的字体与文本中的字体大小相匹配。

以下 Python 脚本使用 Tex 字体生成图形。

import numpy as np
import pylab as pl
import matplotlib

matplotlib.rcParams["text.usetex"] = True
matplotlib.rcParams["font.family"] = "serif"
matplotlib.rcParams["font.size"] = "18"

x = np.linspace(0.0, 2.0 * np.pi, 1000)
y = np.sin(x)
#
pl.figure(figsize=(4, 3))
pl.plot(x, y, "-")
pl.xlabel("x")
pl.ylabel("y")
pl.title("The sine function")
pl.savefig("sine-function.pdf", bbox_inches="tight")

然后我创建了一个 LaTeX 文档来插入该图形。

\documentclass{article}
\usepackage[pdftex]{graphicx}
\usepackage{lipsum}
\begin{document}
\begin{center}
\includegraphics[width=\textwidth]{sine-function.pdf}
\end{center}
\lipsum[1]
\end{document}

得出的结果为:

结果

该图比要求的大得多。我可以将其缩小,例如使用 width=0.5\textwidth,但这并不令人满意,因为无论我如何设置宽度参数,我都无法确定文本中的字体大小是否与图中的字体大小相匹配。

如何正确配置?

答案1

诀窍是直接从 Matplotlib 正确配置字体大小。正确的脚本如下。字体大小设置为 10。为了生成正确的图形,我添加了使用参数缩小图形的尺寸figsize

import numpy as np
import pylab as pl
import matplotlib

matplotlib.rcParams["text.usetex"] = True
matplotlib.rcParams["font.family"] = "serif"
matplotlib.rcParams["font.size"] = "10"

x = np.linspace(0.0, 2.0 * np.pi, 1000)
y = np.sin(x)
#
pl.figure(figsize=(2.0, 1.5))
pl.plot(x, y, "-")
pl.xlabel("x")
pl.ylabel("y")
pl.title("The sine function")
pl.savefig("sine-function.pdf", bbox_inches="tight")

然后我使用了以下 tex 文档。由于 PDF 中的字体大小为 10,因此我不必更改其宽度。

\documentclass{article}
\usepackage[pdftex]{graphicx}
\usepackage{lipsum}
\begin{document}
\begin{center}
\includegraphics{sine-function.pdf}
\end{center}
\lipsum[1]
\end{document}

得出的结果为:

正确的结果

这是正确的结果。

相关内容