Correct way of drawing empty, half-filled and fully filled circles?

\documentclass[12pt]{article}

\usepackage{tikz}
\newcommand*\emptycirc[1][1ex]{\tikz\draw (0,0) circle (#1);} 
\newcommand*\halfcirc[1][1ex]{%
  \begin{tikzpicture}
  \draw[fill] (0,0)-- (90:#1) arc (90:270:#1) -- cycle ;
  \draw (0,0) circle (#1);
  \end{tikzpicture}}
\newcommand*\fullcirc[1][1ex]{\tikz\fill (0,0) circle (#1);} 

\begin{document}

\begin{tabular}{|c|}
            \hline
            \emptycirc \emptycirc[2ex]\\ \hline
            \halfcirc \halfcirc[2ex]\\ \hline
            \fullcirc \fullcirc[2ex]\\ \hline
        \end{tabular}

\end{document}

enter image description here

If a thicker border is desired,

\documentclass[12pt]{article}

\usepackage{tikz}
\newcommand*\emptycirc[1][1ex]{\tikz\draw[thick] (0,0) circle (#1);} 
\newcommand*\halfcirc[1][1ex]{%
  \begin{tikzpicture}
  \draw[fill] (0,0)-- (90:#1) arc (90:270:#1) -- cycle ;
  \draw[thick] (0,0) circle (#1);
  \end{tikzpicture}}
\newcommand*\fullcirc[1][1ex]{\tikz\fill (0,0) circle (#1);} 

\begin{document}

\begin{tabular}{|c|}
            \hline
            \emptycirc \emptycirc[2ex]\\ \hline
            \halfcirc \halfcirc[2ex]\\ \hline
            \fullcirc \fullcirc[2ex]\\ \hline
        \end{tabular}

\end{document}

enter image description here


Run with xelatex or lualatex

\documentclass[12pt]{article}
\usepackage{array}
\usepackage{unicode-math}
\setmathfont{XITS Math}
\begin{document}

\begin{tabular}{|>{$}c<{$}>{\Huge$}c<{$}|}\hline
    \lgwhtcircle           &\lgwhtcircle\\ \hline
    \circlelefthalfblack   &\circlelefthalfblack\\ \hline
    \circlerighthalfblack  &\circlerighthalfblack\\ \hline
    \circlebottomhalfblack &\circlebottomhalfblack\\ \hline
       \circletophalfblack &\circletophalfblack\\ \hline
    \mdlgblkcircle         &\mdlgblkcircle\\ \hline
\end{tabular}

\end{document}

enter image description here


if you want circular nodes and not just circles, you could use following styles:

\documentclass[tikz, border=2mm]{standalone}
\usetikzlibrary{positioning}

\begin{document}
\begin{tikzpicture}[
    fullcircle/.style={circle, draw=#1, fill=#1},
    fullcircle/.default=black,
    halfcircle/.style={circle, draw=#1, 
        path picture={\fill[#1] (path picture bounding box.north west) rectangle (path picture bounding box.south);}},
    halfcircle/.default=black,
    emptycircle/.style={circle, draw=#1, fill=none},
    emptycircle/.default=black,
    node distance=5mm
    ]

    \node[fullcircle] (a) {}; \node[fullcircle=red, minimum size=5ex, right=of a] (b) {};
    \node[halfcircle, below=of a] (a) {}; \node[halfcircle=red, minimum size=5ex, right=of a] (b) {};
    \node[emptycircle, below=of a] (a) {}; \node[emptycircle=red, minimum size=5ex, right=of a] (b) {};
    \end{tikzpicture}
    \end{document}

enter image description here

Tags:

Tikz Pgf