为什么这个独立 tikz 文档中的所有节点都移到了左下角?我正在使用 pgfplots

为什么这个独立 tikz 文档中的所有节点都移到了左下角?我正在使用 pgfplots

pgfplots在独立tikz文档中使用了以下代码:

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{positioning, arrows.meta}

\pgfplotsset{every axis/.append style={
                     tick label style={font=\footnotesize},
                 }}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[grid=both,
                 xmin=-1.5, xmax=9.997,
                 ymin=-1.9975, ymax=5.9975,
                 axis lines=middle,
                 xlabel=\(x\), ylabel=\(y\),
                 xticklabels={}, yticklabels={},
                 clip=false,
                 y axis line style={Stealth-Stealth},
                 x axis line style={Stealth-Stealth}
            ]

        % graph curve
        \addplot[stealth-stealth, domain=-2.15:4.15, samples=50] ({x^2-2*x}, {x+1});

        % points on curve
        \node [circle, fill=black, scale=0.4, label=below left:{\(t=0\)}] at (0, 1) {};
        \node [circle, fill=black, scale=0.4, label=below left:{\(t=-2\)}] at (8, -1) {};
        \node [circle, fill=black, scale=0.4, label=above left:{\(t=2\)}] at (0, 3) {};
        \node [circle, fill=black, scale=0.4, label=above left:{\(t=4\)}] at (8, 5) {};

        % orientation of curve, code from https://tex.stackexchange.com/a/142650/296881
        \def\NORM{sqrt((2*t-2)^2 + 1^2)}
        \addplot[thick,-latex, , samples=6, domain=-1.5:3.5, variable=\t,quiver={
            u=(2*t-2)/\NORM, v=1/\NORM,
                scale arrows=0.1,
        }]
        ({t^2-2*t}, {t+1});
    \end{axis}
\end{tikzpicture}

\end{document}

这是整个文档。我预期它看起来是这样的: 在此处输入图片描述tikzpicture当我在环境 中使用 运行代码时\documentclass{article},我得到的就是正确的结果。但是,当我使用 运行上述代码时\documentclass[tikz]{standalone},我发现所有节点都聚集在左下角,如下所示: 在此处输入图片描述

我该如何解决?

答案1

如果您使用 PGFPlots,建议您始终设置该选项,因为这会影响语法某些部分的解释方式。对于较旧版本的 PGFPlots,如果您想放置 Ti 的某个坐标,则compat必须键入(axis cs:1,1)而不是(1,1)在环境内的相关位置设置 Z 路径axis。对于较新的版本,不再需要这样做,但要实际使用新语法,您需要将选项设置compat为较新的版本。检查PGFlots 手册了解更多信息。

因此,您要么需要更改 Ti 的坐标代码中的 Z 命令可满足旧语法的要求(使用axis cs),或者您需要将选项的值设置compat为相对较新的版本(或仅使用newest)。我建议设置选项compat

因此,一个可行的解决方案如下:

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{arrows.meta}

\pgfplotsset{
    compat=newest, % or at least 1.11
    every axis/.append style={
        tick label style={font=\footnotesize},
    }
}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        grid=both,
         xmin=-1.5, xmax=9.997,
         ymin=-1.9975, ymax=5.9975,
         axis lines=middle,
         xlabel=\(x\), ylabel=\(y\),
         xticklabels={}, yticklabels={},
         clip=false,
         y axis line style={Stealth-Stealth},
         x axis line style={Stealth-Stealth}
    ]

        % graph curve
        \addplot[stealth-stealth, domain=-2.15:4.15, samples=50] ({x^2-2*x}, {x+1});

        % points on curve
        \node[circle, fill=black, scale=0.4, label=below left:{\(t=0\)}] at (0, 1) {};
        \node[circle, fill=black, scale=0.4, label=below left:{\(t=-2\)}] at (8, -1) {};
        \node[circle, fill=black, scale=0.4, label=above left:{\(t=2\)}] at (0, 3) {};
        \node[circle, fill=black, scale=0.4, label=above left:{\(t=4\)}] at (8, 5) {};

        % orientation of curve, code from https://tex.stackexchange.com/a/142650/296881
        \def\NORM{sqrt((2*t-2)^2 + 1^2)}
        \addplot[thick,-latex, samples=6, domain=-1.5:3.5, variable=\t, quiver={
            u=(2*t-2)/\NORM, v=1/\NORM,
            scale arrows=0.1,
        }]
        ({t^2-2*t}, {t+1});
    \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容