我有一个 PDF 文件,其中包含使用 PdfPages 生成的矢量图像(从 matplotlib.backends.backend_pdf 导入 PdfPages)。现在我不再有生成此文件的脚本,而且由于我想修改此图像并将其合并到 tex 文件中,因此我想将此 PDF 还原为 tikz 文件。tikz 表示是否精确并不重要,重要的是它包含主要信息(例如线条的位置,因为图像是函数的图)。
答案1
我认为没有办法,但这是我的尝试:
我用的是回答从 M4rtini 生成一个 PDF 文件,其中包括一些用 PdfPages 生成的图表。
然后我用pdf转svg将 PDF 文件转换为 SVG 文件。具体命令如下
pdf2svg test.pdf test1.svg 1
使用编辑器打开 SVG 文件并找到与曲线对应的路径。在该示例中,路径由以下公式给出
<path style="fill:none;stroke-width:1.5;stroke-linecap:square;stroke-linejoin:round;stroke:rgb(12.156677%,46.665955%,70.587158%);stroke-opacity:1;stroke-miterlimit:10;" d="M 73.832031 50.111719 L 109.90625 53.1 L 145.976562 62.057031 L 182.050781 76.990625 L 218.125 97.896875 L 254.195312 124.779688 L 290.269531 157.63125 L 326.34375 196.459375 L 362.414062 241.260156 L 398.488281 292.033594 " transform="matrix(1,0,0,-1,0,345.6)"/>
使用 pgfplots 环境创建 TEX 文件并将坐标复制到其中。
使用 x 和 y 过滤器适当缩放外推坐标。
例如,最终结果是
\documentclass[]{article}
\usepackage{tikz,pgfplots}
\pgfplotsset{width=7cm,compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[blue,
x filter/.code={\pgfmathparse{(#1-73.832031)/(109.90625-73.832031)}\pgfmathresult},
y filter/.code={\pgfmathparse{(#1-50.111719)/(53.1-50.111719)}\pgfmathresult}] coordinates {
(73.832031,50.111719)
(109.90625,53.1)
(145.976562,62.057031)
(182.050781,76.990625)
(218.125,97.896875)
(254.195312,124.779688)
(290.269531,157.63125)
(326.34375,196.459375)
(362.414062,241.260156)
(398.488281,292.033594) };
\end{axis}
\end{tikzpicture}
\end{document}