使用公制单位在 pgfplots 轴环境中进行相对定位

使用公制单位在 pgfplots 轴环境中进行相对定位

我想独立于轴环境的 x 和 y 比例进行定位,例如,一条线比另一条线高 1 厘米。只有在轴坐标系中才知道该线的起点和终点。我的最小示例显示了意料之外的行为:

\documentclass{scrartcl}

\usepackage{tikz,pgfplots}
\usetikzlibrary{calc}

\pgfplotsset{compat=1.12}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[
    xmin=-3,
    xmax=11,
    ymin=-3,
    ymax=11,
    x = 0.6cm,
    y = 0.6cm,
    axis x line=center,
    axis y line=center]

    \draw[->] (1,1) -- (8,1);
    \draw[-,blue] (1,1) ++(0,1cm) -- ($(8,1) + (0,1cm)$);
  \end{axis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案1

您可以在axis环境内保存坐标,然后在外面绘制第二条线。

在此处输入图片描述

\documentclass{scrartcl}

\usepackage{pgfplots}
\usetikzlibrary{calc}

\pgfplotsset{compat=1.12}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[
    xmin=-3,
    xmax=11,
    ymin=-3,
    ymax=11,
    x = 0.6cm,
    y = 0.6cm,
    axis x line=center,
    axis y line=center]

    \draw[->] (1,1) coordinate(a) -- (8,1) coordinate (b);
  \end{axis}

    \draw[-,blue] (a) ++(0,1cm) -- ($(b) + (0,1cm)$);
\end{tikzpicture}

\end{document}

另一方面,似乎通过单位向量进行归一化至少在这种情况下是有效的:

\documentclass{scrartcl}

\usepackage{pgfplots}
\usetikzlibrary{calc}

\pgfplotsset{compat=1.12}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[
    xmin=-3,
    xmax=11,
    ymin=-3,
    ymax=11,
    x = 0.6cm,
    y = 0.6cm,
    axis x line=center,
    axis y line=center
]

    \draw[->] (1,1) coordinate(a) -- (8,1) coordinate (b);
    % note that axis cs: is required
    \draw[-,blue] (axis cs:1,1+1cm/\pgfkeysvalueof{/pgfplots/y})  -- (axis cs:8,1 + 1cm/\pgfkeysvalueof{/pgfplots/y});
  \end{axis}
\end{tikzpicture}

\end{document}

相关内容