如何将给定尺寸的外部图像放置在 pgfplot 的中心?

如何将给定尺寸的外部图像放置在 pgfplot 的中心?

假设我想将某张图片放在绘图的中心,使其与比例尺上的某个给定维度相匹配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}

在此处输入图片描述

相关内容