我想听听您对以下示例的意见。我只是想展示几个要点,在它们之间建立联系,并相应地标记/着色它们。
使用 TSX,我想出了以下内容,但不确定从长远来看这是否是最好的方法。我喜欢基于 tupel 的输入,但想使用名称来简单地在它们之间划一条线。示例可以升级以包含类似这样的内容吗?
\documentclass[12pt,english]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz,pgfplots}
\setbeamertemplate{navigation symbols}{}
\begin{document}
\begin{frame}[plain]
\hspace*{-1.5em}\begin{tikzpicture}
\begin{axis}[
domain=0:10,
axis lines = center,
height=10cm, width=12cm, grid=major,grid style={dashed, gray!30},
xmin=0, xmax=12, ymin=0, ymax=9,xtick={1,2,...,11},ytick={1,2,...,10}]
\addplot+[red,only marks,mark=*,mark options={scale=2, fill=red},text mark as node=true] coordinates {
(1,2)
(3,1)
(4,3)
(5,2)
(2,3)
};
\addplot+[red,only marks,mark=*,mark options={scale=2, fill=red},text mark as node=true] coordinates {
(7,7)
(8,8)
(9,5)
(11,6)
(10,8)
};
\draw (axis cs:0,0) -- (axis cs:2,2);
\filldraw (axis cs:5,5) circle (3pt);
\node[anchor=north] at (axis cs:7,6.9) {1};
\node[anchor=south] at (axis cs:5,1) {$f(\theta_A, x)$};
\end{axis}
\end{tikzpicture}
\end{frame}
\end{document}
答案1
好吧,如果您只想命名圆圈以便对其进行操作,则需要使用节点,因为简单形状没有别名。在我看来,实现此目的的简单解决方案是切换到常规 Tikz。使用\foreach
,您可以创建许多节点并使用计数器为每个节点分配名称,在我们的例子中将类似于n\n
,从而产生命名的节点n1, n2, n3
等等。
输出
代码
\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\newcommand\labelit[3][below]{%
\node[label={#1:#3}] at (#2) {};
}
\def\maxc{11}
\begin{document}
\begin{tikzpicture}
\draw[-Stealth, shorten >=-1cm] (0,0) -- (\maxc,0);
\draw[-Stealth, shorten >=-1cm] (0,0) -- (0,\maxc-2);
\foreach \x [count=\y] in {1,...,\maxc}{
\draw (\x,.1) -- (\x,-.1) node[below] {\x};
\ifnum\x<10\relax
\draw (.1,\y) -- (-.1,\y) node[left] {\y};
\draw[dashed, gray!30] (0,\y) -- (\maxc+1,\y);
\fi
\draw[dashed, gray!30] (\x,0) -- (\x,\maxc-1);
}
\foreach \point [count=\n] in {%
(1,2), (3,1),
(4,3), (5,2),
(2,3), (7,7),
(8,8), (9,5),
(11,6), (10,8)
}{%
\node[circle, fill=red, inner sep=3pt] (n\n) at \point {};
}
% label points, arguments are: [position]{node}{label}
\labelit{n4}{$f(\theta_A, x)$}
% and now random links!
\draw (n5) -- (n3) -- (n1) -- (n4) -- (n2);
\end{tikzpicture}
\end{document}