\documentclass[tikz,border=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{xcolor}
\begin{document}
\begin{tikzpicture}[scale=0.8]
\def\r{1}
\def\pointradius{3}
\newcommand{\oneplusone}
{
\foreach \i in {1,2}
{
\coordinate (p\i) at (40*\i + 210:\r);
\filldraw[red] (p\i) circle (\pointradius pt);
}
\foreach \j in {3,4}
{
\coordinate (p\j) at (100*\j + 100 :\r);
\filldraw (p\j) circle (\pointradius pt);
}
}
\foreach \a/\b/\c/\d [count=\shft from 0] in
{1/3/2/4,
1/4/2/3,
1/2/3/4}
{
\begin{scope}[xshift=100*\shft,yshift=0]
\oneplusone
\draw[thick] (p\a) -- (p\b);
\draw[thick] (p\c) -- (p\d);
\oneplusone
\end{scope}
}
\newcommand{\oneplussome}
{
\foreach \i in {1,2}
{
\coordinate (p\i) at (40*\i + 210:\r);
\filldraw[red] (p\i) circle (\pointradius pt);
}
\foreach \j in {3}
{
\coordinate (p\j) at (100*\j + 100 :\r);
\filldraw (p\j) circle (\pointradius pt);
}
\foreach \k in {4,5,6}
{
\coordinate (p\k) at (30*\k + 360 :\r);
\filldraw (p\k) circle (\pointradius pt);
}
}
\foreach \a/\b/\c/\d/\e/\f [count=\shft from 0] in
{1/2/3/4/5/6,
2/1/3/4/5/6,
1/3/2/4/5/6}
{
\begin{scope}[xshift=100*\shft,yshift=-100]
\oneplussome
\draw[thick] (p\b) -- (p\d) -- (p\e) -- (p\f) -- cycle;
\fill[black!10] (p\b) -- (p\d) -- (p\e) -- (p\f) -- cycle;
\draw[thick] (p\a) -- (p\c);
\oneplussome
\end{scope}
}
\foreach \a/\b/\c/\d/\e/\f [count=\shft from 0] in
{1/2/3/4/5/6}
{
\begin{scope}[xshift=100*\shft + 300,yshift=-100]
\oneplussome
\draw[thick] (p\a) -- (p\b) -- (p\c) -- cycle;
\fill[black!10] (p\a) -- (p\b) -- (p\c) -- cycle;
\draw[thick] (p\d) -- (p\e) -- (p\f) -- cycle;
\fill[black!10] (p\d) -- (p\e) -- (p\f) -- cycle;
\oneplussome
\end{scope}
}
\newcommand{\someplussome}
{
\foreach \i in {1,2}
{
\coordinate (p\i) at (40*\i + 210:\r);
\filldraw[red] (p\i) circle (\pointradius pt);
}
\foreach \j in {3,4,5}
{
\coordinate (p\j) at (30*\j + 270 :\r);
\filldraw (p\j) circle (\pointradius pt);
}
\foreach \k in {6,7,8}
{
\coordinate (p\k) at (30*\k + 300 :\r);
\filldraw (p\k) circle (\pointradius pt);
}
}
\foreach \a/\b/\c/\d/\e/\f/\g/\h [count=\shft from 0] in
{1/2/3/4/5/6/7/8,
2/1/3/4/5/6/7/8}
{
\begin{scope}[xshift=100*\shft,yshift=-200]
\someplussome
\draw[thick] (p\a) -- (p\c) -- (p\d) -- (p\e) -- cycle;
\fill[black!10] (p\a) -- (p\c) -- (p\d) -- (p\e) -- cycle;
\draw[thick] (p\b) -- (p\f) -- (p\g) -- (p\h) -- cycle;
\fill[black!10] (p\b) -- (p\f) -- (p\g) -- (p\h) -- cycle;
\draw[thin] (p\a) -- (p\c);
\draw[thin] (p\a) -- (p\e);
\someplussome
\end{scope}
}
\foreach \a/\b/\c/\d/\e/\f/\g/\h [count=\shft from 0] in
{1/2/3/4/5/6/7/8}
{
\begin{scope}[xshift=100*\shft + 200,yshift=-200]
\someplussome
\draw[thick] (p\c) -- (p\d) -- (p\e) -- (p\f) -- (p\g) -- (p\h) -- cycle;
\fill[black!10] (p\c) -- (p\d) -- (p\e) -- (p\f) -- (p\g) -- (p\h) -- cycle;
\draw[thick] (p\a) -- (p\b);
\someplussome
\end{scope}
}
\foreach \a/\b/\c/\d/\e/\f/\g/\h [count=\shft from 0] in
{1/2/3/4/5/6/7/8,
1/2/6/7/8/3/4/5}
{
\begin{scope}[xshift=100*\shft + 300,yshift=-200]
\someplussome
\draw[thick] (p\a) -- (p\b) -- (p\c) -- (p\d) -- (p\e) -- cycle;
\fill[black!10] (p\a) -- (p\b) -- (p\c) -- (p\d) -- (p\e) -- cycle;
\draw[thick] (p\f) -- (p\g) -- (p\h) -- cycle;
\fill[black!10] (p\f) -- (p\g) -- (p\h) -- cycle;
\someplussome
\end{scope}
\node at (1.8,-0.2) {$\mapsto$};
\node at (5.3,-0.2) {$+$};
\node at (1.8,-3.7) {$\mapsto$};
\node at (5.3,-3.7) {$+$};
\node at (8.7,-3.7) {$-$};
\node at (1.8,-7.2) {$\mapsto$};
\node at (5.3,-7.2) {$+$};
\node at (8.7,-7.2) {$-$};
\node at (12.3,-7.2) {$-$};
}
\end{tikzpicture}
\end{document}