![为什么这个独立 tikz 文档中的所有节点都移到了左下角?我正在使用 pgfplots](https://linux22.com/image/465110/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%99%E4%B8%AA%E7%8B%AC%E7%AB%8B%20tikz%20%E6%96%87%E6%A1%A3%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E8%8A%82%E7%82%B9%E9%83%BD%E7%A7%BB%E5%88%B0%E4%BA%86%E5%B7%A6%E4%B8%8B%E8%A7%92%EF%BC%9F%E6%88%91%E6%AD%A3%E5%9C%A8%E4%BD%BF%E7%94%A8%20pgfplots.png)
我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}