为什么我不能使用坐标中的坐标?

为什么我不能使用坐标中的坐标?

\documentclass[beamer,crop]{standalone}
\usepackage{times}
\usepackage{physics}

\usepackage{pgfplots}
\usetikzlibrary{calc}

\pgfplotsset{
    compat=1.17, % Specify the compatibility version
    nice_axis/.style={
        samples=101,
        domain=-2:2,
        % title={Triangle Function},
        xmax=1.2,
        xmin=-1.2,
        ymax=1.2,
        ymin=-1.2,
        ytick={0},
        xtick={0},
        % grid=both,
        axis lines=middle,
        axis line style={->},
        xlabel={$\Im{s\left( t \right)}$},
        ylabel={$\Re{s\left( t \right)}$},
        x label style={at={(axis description cs:1,0.5)},anchor=west},
        y label style={at={(axis description cs:0.5,1)},rotate=0,anchor=south},
        legend pos=outer north east
    }
}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[
    nice_axis,
  ]

    \addplot[black, thick, domain=0:360, samples=100, smooth] ({cos(x)}, {sin(x)});
    
    \addplot[red, thick, mark=*, data cs=polar] coordinates {
        (30,1)
    } coordinate (angle30);
    \addplot[blue, thick, mark=*, yshift=10pt] coordinates{
        (angle30)
    };

  \end{axis}

\end{tikzpicture}

\end{document}

angle30像往常一样期待着\draw,但我得到了

Package PGF Math Error: Sorry, an internal routine
 of the floating point unit got an ill-formatted floating point number `-120.0'
. The unreadable part was near '-120.0'..

如何解决?

答案1

您无法这样做,因为您正在对画布上(angle30)具有数据格式的点进行困惑(x,y),它们恰好具有相似的名称,并且碰巧在代码级别上看起来相似。但这些是不同的表示,具有不同的含义,在不同的范围和上下文中。请参见下面的橙色线。


让我们反汇编一下您的命令,这可能过于简单,但应该能向您展示这个想法。

\addplot[red, thick, mark=*, data cs=polar] coordinates {
        (30,1)
    } coordinate (angle30);

因此这个命令表示:

  • 开始一条路径(\)然后结束它(;
  • 做一些action中间的事情(就像在电影里一样)
  • 第一个行动应该是隐藏在addplot
  • 完成后请记住最后一个位置:coordinate
  • 并称之为angle30
  • 现在完成路径;

虽然\draw[orange] (angle30) -- +(1,1);会说:

  • 开始一条路径\
  • 做一些隐藏的动作draw
  • angle30从先前存储的画布位置开始
  • 在相对坐标中画一条线
  • 完成这条路;

结果

\documentclass[beamer,crop]{standalone}
\usepackage{times}
\usepackage{physics}

\usepackage{pgfplots}
\usetikzlibrary{calc}

\pgfplotsset{
    compat=1.17, % Specify the compatibility version
    nice_axis/.style={
        samples=101,
        domain=-2:2,
        % title={Triangle Function},
        xmax=1.2,
        xmin=-1.2,
        ymax=1.2,
        ymin=-1.2,
        ytick={0},
        xtick={0},
        % grid=both,
        axis lines=middle,
        axis line style={->},
        xlabel={$\Im{s\left( t \right)}$},
        ylabel={$\Re{s\left( t \right)}$},
        x label style={at={(axis description cs:1,0.5)},anchor=west},
        y label style={at={(axis description cs:0.5,1)},rotate=0,anchor=south},
        legend pos=outer north east
    }
}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[
    nice_axis,
  ]

    \addplot[black, thick, domain=0:360, samples=100, smooth] ({cos(x)}, {sin(x)});
    
    \addplot[red, thick, mark=*, data cs=polar] coordinates {
        (30,1)
    } coordinate (angle30);
%    \addplot[blue, thick, mark=*, yshift=10pt] coordinates{
%        (angle30)
%    };

    \draw[orange] (angle30) -- +(1,1);

  \end{axis}

\end{tikzpicture}

\end{document}

相关内容