假设我想将某张图片放在绘图的中心,使其与比例尺上的某个给定维度相匹配pgfplot
。我最初认为我可以在标准程序中包含一个外部图像,键是axis equal image
。但是,我想在中间的图像周围绘制,这样轴就需要保持可缩放性。我认为后一种选择是行不通的。
举一个更具体的例子,我想绘制围绕月球的平面轨道。为了给人一种比例感,我想在绘图中间绘制月球,然后绘制任何类型的轨道。
假设我想在月球周围绘制一个 200 公里的简单圆形轨道,如下所示:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\rMoon}{1737.4}
\pgfmathsetmacro{\rOrbit}{200}
\begin{axis}[
axis equal
]
\addplot[samples=100, domain=0:2*pi]
({(\rMoon+\rOrbit) * cos(deg(x))}, {(\rMoon+\rOrbit) * sin(deg(x))});
\end{axis}
\end{tikzpicture}
\end{document}
输出为:
我怎样才能将月球的图片放在中间?月球的半径是 1737.4 公里。
您可以使用以下资产:
答案1
这就是\addplot graphics
目的。如果您使用
\addplot graphics [xmin=-\rMoon, xmax=\rMoon, ymin=-\rMoon, ymax=\rMoon] {moon.png};
它会自动缩放并正确定位:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\rMoon}{1737.4}
\pgfmathsetmacro{\rOrbit}{200}
\begin{axis}[
axis equal,
]
\addplot graphics [xmin=-\rMoon, xmax=\rMoon, ymin=-\rMoon, ymax=\rMoon] {moon.png};
\addplot[samples=100, domain=0:2*pi]
({(\rMoon+\rOrbit) * cos(deg(x))}, {(\rMoon+\rOrbit) * sin(deg(x))});
\end{axis}
\end{tikzpicture}
\end{document}
答案2
使用所给出的图像进行手动缩放:
\documentclass{article}
\usepackage{pgfplots,graphicx}
\pgfplotsset{compat=1.9}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\rMoon}{1737.4}
\pgfmathsetmacro{\rOrbit}{200}
\begin{axis}[
axis equal
]
\addplot[samples=100, domain=0:2*pi]
({(\rMoon) * cos(deg(x))}, {(\rMoon) * sin(deg(x))});
\node (label) at (axis cs:0,0) {\includegraphics[scale=0.387]{moon.png}};
\addplot[samples=100, domain=0:2*pi]
({(\rMoon+\rOrbit) * cos(deg(x))}, {(\rMoon+\rOrbit) * sin(deg(x))});
\end{axis}
\end{tikzpicture}
\end{document}