在 pgfplot 中自动使用绝对坐标轴

在 pgfplot 中自动使用绝对坐标轴

我希望 pgfplot 自动添加一个具有绝对坐标的网格,例如下图原始 pdf 是 1.17x1.19in,所以我希望 x 是 (0,1.17in) 且 y 是 (0,1.19in)。

现在我将其硬编码为 Nx/Ny,我们可以通过自动检测图像文件来做到这一点,这样如果图像发生变化,我就不需要更改它了。

根据回复更新后,现在运行正常。

现在的 MWE 是:

\documentclass{standalone}
\usepackage{pgfplots}
\usetikzlibrary{calc}

\begin{document}

\def\imgfilename{tiger}
\def\u{72.26999} % 28.4526 -> pt to cm; 72.26999 -> pt to inch
\newbox\tempfig \newlength\tempwidth \newlength\tempheight
\setbox\tempfig=\hbox{{\includegraphics{\imgfilename}}}
\tempwidth\wd\tempfig \tempheight\ht\tempfig

\pgfmathparse{\tempwidth/\u}  \pgfmathsetmacro\Nx{\pgfmathresult}
\pgfmathparse{\tempheight/\u} \pgfmathsetmacro\Ny{\pgfmathresult}

\begin{tikzpicture}
    \begin{axis}[
            grid=both,minor tick num=2,major grid style={gray!80},
            width=10cm,
            scale only axis,
            enlargelimits=false,
        axis on top]
        \addplot graphics [xmin=0,xmax=\Nx,ymin=0,ymax=\Ny,
            includegraphics={},
        ] {\imgfilename};
    \end{axis}
    \draw(current bounding box.north east)node[above left]{$(\Nx\times\Ny\ in)$};
\end{tikzpicture}

\end{document}

输出为:

可爱的老虎

原始的tiger.png是:

可爱的老虎

答案1

如何在 LaTeX 中获取图片的精确尺寸?获取长度作为数字?更多细节。

\documentclass{article}
    \usepackage{tikz,pgfplots}
    \usetikzlibrary{external}\tikzexternalize
\begin{document}
    \foreach\n in{0,...,4}{
        \tikz\draw[ball color=white,rotate=30](0,0)rectangle(1+\n,2+\n*\n);
    }
    \newbox\tempfig \newlength\tempwidth \newlength\tempheight
    \foreach\n in{0,...,4}{
        \setbox\tempfig\hbox{\includegraphics{\jobname-figure\n.pdf}}
        \tempwidth\wd\tempfig \tempheight\ht\tempfig
        \tikzset{external/export next=false}
        \begin{tikzpicture}
            \pgfmathsetmacro\Nx{\tempwidth} \pgfmathsetmacro\Ny{\tempheight}
            \begin{axis}[grid=both,enlargelimits=false,axis on top]
                \addplot graphics[xmin=0,xmax=\Nx,ymin=0,ymax=\Ny]{\jobname-figure\n.pdf};
            \end{axis}
            \draw(current bounding box.north east)node[above left]{$(\Nx\times\Ny)$};
        \end{tikzpicture}
    }
\end{document}

相关内容