在 TikZ 图的每个点处绘制一个实心圆

在 TikZ 图的每个点处绘制一个实心圆

考虑以下简单示例:

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}

  \coordinate (a) at (0,0);
  \coordinate (b) at (1,1);
  \coordinate (c) at (2,0);

  \draw (a) -- (b) -- (c);

  \fill (a) circle (2pt);
  \fill (b) circle (2pt);
  \fill (c) circle (2pt);

\end{tikzpicture}
\end{document}

我对改进此代码很感兴趣。特别是我想避免手动绘制圆圈。想象一下涉及许多不同名称的顶点的情况。

我知道我可以用一些循环来代替填充

  \foreach \i in {a,b,c}
  \fill (\i) circle (2pt);

但我对更全局的魔法更感兴趣,那就是当 TikZ 遇到一个坐标时,填充某个固定半径(或尺寸)的圆(或任何其他形状)的方法。

额外的好处是可以针对某些顶点关闭解决方案。我相信解决方案是使用style,但我不知道该怎么做。

答案1

plot可以使用marks。这样就可以使用标记*x和。可以使用库加载更多绘图+标记。ballplotmarks

可用选项包括

  • mark
  • mark repeat
  • mark phase
  • mark indices
  • mark size
  • 样式every mark
  • mark options(简单设置every mark)和
  • no marksno markers(与 相同mark=none)。

plotmarks图书馆

  • mark color(为了其他带星号的半版本的颜色),
  • text mark(商标所用的文字text),
  • text mark as node
  • text mark style

代码

\documentclass[tikz]{standalone}
\usetikzlibrary{plotmarks}
\begin{document}
\begin{tikzpicture}[anchor=mid west,
  mark size=+2pt, mark color=blue, text mark=Ti\emph{k}Z, ball color=green]
  \foreach \plm[count=\cnt] in {*, x, +, ball, % always loaded, ball only with TikZ
      -, |, o, asterisk, star, 10-pointed star,
      oplus, oplus*, otimes, otimes*, triangle, triangle*, diamond, diamond*,
      halfdiamond*, halfsquare*, halfsquare right*, halfsquare left*,
      pentagon, pentagon*, Mercedes star, Mercedes star flipped, halfcircle, halfcircle*,
      heart, text}
    \draw[mark options={fill=red}, shift=(down:\cnt/2.5)]
      plot[mark=\plm] coordinates {(0,0) (1,.5) (2,0)} node {\quad\ttfamily\plm};
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

相关内容