我通过以下方式定义了一些观点
\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);}