我有一个.tex
-文档,其中一个图形是由python模块matplotlib
生成的,我想要的是,图形尽可能好地融入文档,所以我希望图形中使用的字符看起来和文档其余部分中的其他相同字符完全一样。
我的第一次尝试如下所示(matplotlibrc
文件):
text.usetex : True
text.latex.preamble: \usepackage{lmodern} #Used in .tex-document
font.size : 11.0 #Same as in .tex-document
backend: PDF
为了编译其中包括matplotlib
的PDF输出的.tex
,使用pdflatex
。
现在,输出看起来还不错,但看起来有些不同,图形中的字符在笔划宽度上似乎较弱。
什么是最好的方法呢?
编辑:最小示例:LaTeX-输入:
\documentclass[11pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{graphicx}
\begin{document}
\begin{figure}
\includegraphics{./graph}
\caption{Excitation-Energy}
\label{fig:graph}
\end{figure}
\end{document}
Python脚本:
import matplotlib.pyplot as plt
import numpy as np
plt.plot([1,2,3,4])
plt.xlabel("Excitation-Energy")
plt.ylabel("Intensität")
plt.savefig("graph.pdf")
PDF输出:
4条答案
按热度按时间72qzrwbm1#
字体的差异可能是由于使用matplotlib设置图片的参数不正确或错误地将其集成到最终文档中造成的。我认为 text.latex.preamble中的问题:\usepackage{lmodern}.这个东西工作得很糟糕,甚至开发人员都不保证它的可工作性,how you can find here.在我的情况下它根本不工作。
与字体系列关联的字体差异最小。要修复此问题,您需要:* “字体系列”:rc中的“ldemont”*。其他选项和更详细的设置可以在here.中找到
为了解决这个问题,我使用了一个稍微不同的方法- direct. plt.rcParams ['text.latex. preamble']=[r”\usepackage{lmodern}"]。这并不奇怪,但它起作用了。更多信息可以在上面的链接中找到。
为了防止这些影响,建议看看这个代码:
最后是乳胶:
结果
从两种字体的比较中可以看出-不存在差异(1 - MatPlotlib,2 - pdfLaTeX)
ia2d9nvy2#
或者,你可以使用Matplotlib的PGF backend。它使用LaTeX包PGF导出你的图形,然后它将使用你的文档使用的相同字体,因为它只是LaTeX命令的集合。你可以使用input命令而不是includegraphics在图形环境中添加:
如果你需要调整尺寸,package adjustbox可以帮上忙。
xkftehaa3#
tikzplotlib正是为此目的而设置的。
并将生成的文件包含在LaTeX文档中,方法是
如果在创建文件后需要更改绘图中的内容,也可以轻松编辑。
xriantvc4#
我很难让Elenium的答案对我起作用。我在matplotlib rc-params中指定
'figure.figsize'
和'font.size'
与LaTeX文档的字体大小和textwidth
相同,但标签的文本大小仍然有明显的差异。我最终发现matplotlib中的标签字体大小显然与'font.size'
无关。下面的解决方案对我来说非常有效:
巨蟒
乳胶