Tikz 在“轴”环境中绘制

Tikz 在“轴”环境中绘制

我想在绘图内绘制额外的线条。例如,

\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}

在此处输入图片描述

相关内容