使用 Matplotlib,我生成了一个 .pgf 图像。
import matplotlib
matplotlib.rcParams.update({"pgf.texsystem": "pdflatex"})
from matplotlib.pyplot import subplots, show
from numpy import linspace
x = linspace(0, 100, 30)
fig, ax = subplots(figsize = (10, 6))
ax.scatter(x, x)
fig.tight_layout()
fig.savefig('figure.pgf')
生成一个长文件:http://pastebin.com/tjLtTi5Q。我使用以下方式将此图像包含在文档中
\usepackage{pgf}
\input{testfig.pgf}
我希望以某种方式缩放它,使字体大小保持不变。最好通过包装某些东西\input{...}
而不是更改 pgf 文件,尽管如果这是唯一的方法,后者也是可以接受的。
之前的尝试包括:
\begin{pgfpicture}[scale=0.5]
成立这里,但规模只存在于tikzpicture
尝试应用 pgfmagnify,我发现这里但无法工作,也找不到太多文档
\begin{pgfmagnify}{2}{2} \begin{pgfpicture} .... \end{pgfmagnify}
使用
\begin{pgfpicture}[width=0.5]
哪个也不起作用。使用上述的 resizebox这里:
\resizebox{0.7\textwidth}{!}{\input{figure.pgf}}
这(也许很明显)不会保留字体大小。
编辑:图片使用了 Harish Kumar 评论中的建议:
该文件的一部分似乎与字体有关:
\pgftext[x=0.501680in,y=2.691389in,right,]{{\sffamily\fontsize{12.000000}{14.400000}\selectfont 40}}%
答案1
例如,您可以使用 k 缩放图形scalebox
,并将字体缩放 1/k 来补偿这一点。如果您使用 XeLaTeX 或 LuaLaTeX 进行编译,则可以使用 fontspec 的缩放功能。
这是一个简单的例子:
% to compile with XeLaTeX or LuaLaTeX
\documentclass[varwidth,border=50]{standalone}
\usepackage{fontspec}
\usepackage{pgf}
\begin{document}
% font scale = .25*4 = 1
\setsansfont{Latin Modern Sans}[Scale=.25]%
\scalebox{4}{
\begin{pgfpicture}
\pgfsetstrokecolor{red}%
\pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{5mm}{5mm}}%
\pgfusepath{draw}%
\pgftext[x=4,y=4]{{\sffamily\fontsize{12.000000}{14.400000}\selectfont 40}}%
\end{pgfpicture}
}
% font scale = .5*2 = 1
\setsansfont{Latin Modern Sans}[Scale=.5]%
\scalebox{2}{
\begin{pgfpicture}
\pgfsetstrokecolor{red}%
\pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{5mm}{5mm}}%
\pgfusepath{draw}%
\pgftext[x=4,y=4]{{\sffamily\fontsize{12.000000}{14.400000}\selectfont 40}}%
\end{pgfpicture}
}
\end{document}
答案2
您可以完全控制axis
环境中的绘图尺寸tikzpicture
。
\begin{tikzpicture}
\begin{axis}[
width=\textwidth,
height=\textwidth
]
...
\end{tikzpicture}
在这里,您可以用任何有效的乳胶尺寸替换 \textwidth,并且无论您将宽度和高度设置为多少,字体大小都会与文档字体匹配。
这将需要编辑 pgf 文件,你说你不想这样做,但我真的认为这是最简单的方法。
我强烈建议你看看matplotlib2tikz,它生成的 pgf 文件比原生 matplotlib pgf 后端更容易使用。