我想在绘图内绘制额外的线条。例如,
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain = -1:1, samples = 500]
\addplot[color = red] {4-rad(acos(x))};
\end{axis}
\end{tikzpicture}
\end{document}
会产生一个漂亮的图表。现在,当我尝试在 y 轴上添加(例如均匀分布)刻度,并在图表中水平绘制小线,然后向下绘制到 x 轴,如下所示:
它根本不起作用:任何
\draw
轴环境之外的物体将不再在轴上绘画,而是在其他地方。例如:
\foreach \y in {0, 0.5, 1, 1.5, 2} \draw (-2pt, \y) -- (2pt, \y) ;
不会在“轴” y 轴上绘制刻度。如果我在轴内输入相同的命令(将 \y 替换为 y),我会得到
错误:插入的控制序列丢失。
--- TeX 说 --- \inaccessible \draw (-2pt, y) -- (+2pt, y) ;
我能做些什么?
答案1
您可以使用\pgfplotsinvokeforeach
线条。请参阅手册(第 547 页 v.1.18.1)。
例如:
\documentclass[border=2mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
domain=-1:1,samples=500,
xmin=-1.2,xmax=1.2,ymin=0,
ytick={0,0.5,...,4},
]
\addplot[color = red] {4-rad(acos(x))};
\pgfplotsinvokeforeach{1,1.5,...,3.5}
{
\addplot[mark=none,gray,very thin] coordinates {(-1.5,#1) (cos(deg(4-#1)),#1) (cos(deg(4-#1)),0)};
}
\end{axis}
\end{tikzpicture}
\end{document}