我正在使用 matplotlib 的 pgf 后端来生成 pgf 文件,我想使用 tikzscale 将其放入我的 latex 文档中,以便能够轻松调整它们的大小。
示例 Python 代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import matplotlib as mpl
mpl.use('pgf')
import numpy as np
import matplotlib.pyplot as mplp
mpl.rcParams['text.latex.unicode']=True
mpl.rcParams['text.usetex']=True
mpl.rcParams['pgf.texsystem'] = 'pdflatex'
fig = mplp.figure()
ax = fig.add_subplot(111)
x = np.arange(0,2 * np.pi, .1)
data = np.sin(x)
fmt = {"lw" : 3, "c" : "r", "ls" : '-'}
ax.plot(x, data, label=r"sample data with greek $\mu$", **fmt)
ax.set_ylabel(r"sample", rotation=0)
ax.legend()
fig.set_size_inches(1.41,1.)
# fig.savefig('./sample.pgf', dpi=500, bbox_inches='tight')
fig.savefig('./sample.pgf', dpi=500)
乳胶代码示例:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{tikzscale}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\newcommand{\includepgf}[4]
{
\begin{figure}
\centering
\includegraphics{#1}
\includegraphics[width=#2\textwidth, height=#2*0.7071428571428572\textwidth]{#1}
\includegraphics[width=#2\textwidth, axisratio=0.7071428571428572]{#1}
\caption[]{#4}
\label{#3}
\end{figure}
}
\begin{document}
\includepgf{sample.pgf}{.9}{fig:sample}{Sample Figure}
\end{document}
\includegraphics
不幸的是,对于这三个不同的命令,发生了以下情况:
效果符合预期,包含原始大小的情节
编译时使用
Package tikzscale Warning: Scaling of sample.pgf's width was only (tikzscale) accurate to 208.59694pt on input line 27. Package tikzscale Warning: Scaling of sample.pgf's height was only (tikzscale) accurate to 147.29488pt on input line 27.
最终的 pdf 文件大小无需调整。
无法编译,给出
! Package tikzscale Error: Requested to scale unscalable graphic.
答案1
我不认为includegraphics
这是自然的解决方案,因为你正在创建一个可用的 LaTeX 文件。正如 @Torbjørn T. 已经提到的,你应该使用命令input
。然后,为了解决你的缩放问题,你可以使用
\scalebox{1.5}{\input{sample.pgf}}
例如;没有涉及初步的 LaTeX 编译。
- 如果您想使用
includegraphics
,很自然地将您的图像保存为png
中的一个文件python
。 - 查看代码的输出
python
,即pgf
文件,我发现存在一些裁剪问题。
代码
\documentclass{article}
\usepackage{tikz}
\usepackage{tikzscale}
\usepackage{pgfplots}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{figure}[htb!]
\centering
\scalebox{.5}{\input{sample.pgf}}
\scalebox{1}{\input{sample.pgf}}
\scalebox{1.5}{\input{sample.pgf}}
\caption{Sample figure modified with scalebox}
\label{fig:1}
\end{figure}
\lipsum[2]
\end{document}