\foreach PGFPlots 中的坐标名称

\foreach PGFPlots 中的坐标名称

我通过以下方式定义了一些观点

\coordinate (A1) at (-4,0);
\coordinate (B1) at (-2,1);
\coordinate (C1) at (0,0);
...

我想在它们的位置放一个小破折号。我尝试了两种方法,但都抛出了一堆错误

\foreach \p in {A1,B1,C1,A2,B2,C2,A3,B3,C3}{
    \draw[thick] ([yshift=-2pt]\p) -- ([yshift=2pt]\p);
}
\foreach \p in {A1,B1,C1,A2,B2,C2,A3,B3,C3}{
    \draw[thick] ($(\p)+(0,1)$) -- ($(\p)+(0,-1)$);
}

­

如果你想重现错误,请点击此处

\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{calc}

\begin{document}

\begin{tikzpicture}
\begin{axis}
[
axis lines = center,
ymin=-1,
ymax=2,
xmin=-6,
xmax=10,
width=9cm,
clip=false
]

\coordinate (A1) at (-4,0);
\coordinate (B1) at (-2,1);
\coordinate (C1) at (0,0);


\foreach \p in {A1,B1,C1}{
    \draw[thick] ($(\p)+(0,1)$) -- ($(\p)+(0,-1)$);
}

\end{axis}
\end{tikzpicture}


\end{document}

答案1

据我猜测,您正在寻找以下内容:

在此处输入图片描述

(所需短线以红色突出显示)

pgfplots基于tikz,但是 中的所有东西tikz在 中都不起作用\pgfplots。循环就是这种情况\foreach。有关详细信息,请参阅PGFPLOTS 包手册, 部分8.1 实用命令,第 546 页。

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usetikzlibrary{plotmarks}

\begin{document}
    \begin{tikzpicture}
\begin{axis}[width=9cm,
    axis lines = center,
    xmin=-6,    xmax=10,
    ymin=-1,    ymax=2,
    clip=false
            ]
\addplot [only marks, mark options={very thick, color=red, mark=|}] 
    coordinates {(-4,0) (-2,1) (0,0)};
\end{axis}
    \end{tikzpicture}
\end{document}

答案2

并非\foreach在每种情况下都使用axis。请参阅手册第 546-548 页。在这里您可以\pgfplotsinvokeforeach像这样使用:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
axis lines = center,
ymin=-1,
ymax=2,
xmin=-6,
xmax=10,
width=9cm,
clip=false
]
\coordinate (A1) at (-4,0);
\coordinate (B1) at (-2,1);
\coordinate (C1) at (0,0);
\pgfplotsinvokeforeach {A1,B1,C1}{
\draw[thick] ($(#1)+(0,1)$) -- ($(#1)+(0,-1)$);}
\end{axis}
\end{tikzpicture}
\end{document}

带线条的图形

编辑:

上面计算的坐标是错误的。

在里面做计算axis也不是很简单 - 请参阅:在 PGFplots 轴环境中计算 TikZ 注释的坐标

这有效:

\pgfplotsinvokeforeach {A1,B1,C1}{ \draw[thick] ([yshift=-2pt]#1) -- ([yshift=2pt]#1);}

相关内容