我希望 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}