我想配置 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}
得出的结果为:
这是正确的结果。