我想在 480x800 的图像上绘制一个 pgfplots 网格。使用下面的代码,我可以看到网格已绘制,但图像未显示。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\def\fname{/media/sf_work/demo.png}
\begin{tikzpicture}
\begin{axis}[
grid = both,scale=.5,
width=480,
height=800,
, minor tick num=3
, grid style={draw=gray!10,line width=.1pt}
, major grid style={line width=0.5pt,draw=gray!50}
, axis line style={latex-latex}
, xticklabels = \empty
, yticklabels = \empty
, draw=blue!20
]
\node[] (image) at (axis cs:240,400) {\includegraphics[]{\fname}};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
您正在将width
和length
(所生成图片的物理尺寸)与 x 和 y 值范围混合在一起。请注意,该图形将是矢量的,因此您不能在这里玩像素,至少不是那么容易。
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\def\fname{/media/sf_work/demo.png}
\begin{tikzpicture}
\begin{axis}[
grid = both, %scale removed, here it messes things up
width=4.8cm,
height=8cm,
xmin=0, xmax=480, ymin=0, ymax=800,
, minor tick num=3
, grid style={draw=gray!10,line width=.1pt}
, major grid style={line width=0.5pt,draw=gray!50}
, axis line style={latex-latex}
, xticklabels = \empty
, yticklabels = \empty
, draw=blue!20
]
% axis cs is not needed
\node[] (image) at (axis cs:240,400) {\includegraphics[width=2cm]{example-image-duck}};
\end{axis}
\end{tikzpicture}
\end{document}
请注意,即使 x 和 y 标签不存在,pgfplots 也会为其添加空间,并且通常网格是在下面图片。