5

I am trying to draw this diagram

enter image description here

This is where I've got to, but I'm stuck trying to work out how add the colours.

enter image description here

MWE

\documentclass{article}
\usepackage{karnaugh-map}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}

\begin{document}

\begin{tikzpicture}
    \begin{axis}
    [hide axis,
    plot box ratio = 1 6 1,
    view = {0}{15}]
       \addplot3[surf,
       samples=20,
       domain=0:2*pi,y domain=0:2*pi,
       z buffer=sort]
       ({(2+cos(deg(x)))*cos(deg(y+pi/2))}, 
        {(2+cos(deg(x)))*sin(deg(y+pi/2))}, 
        {sin(deg(x))});
    \end{axis}
\end{tikzpicture}
%
\begin{karnaugh-map}[4][4][1][][]
\end{karnaugh-map}

\end{document}

Colour codes

0000 - #F70400

0100 - #AA0154

1100 - #5600AB

1000 - #0003FB

0001 - #FF5500

0101 - #AA5455

1101 - #5555AB

1001 - #0055FE

0011 - #FFAA01

0111 - #AAA956

1111 - #56AAAA

1011 - #00AAFF

0010 - #FEFF02

0110 - #A9FF54

1110 - #55FFAA

1010 - #0FF6FF

2
  • If you could provide me with the color codes or names, I think I would be able to reproduce your pic.
    – user121799
    Commented Jul 13, 2018 at 13:17
  • @marmot I don't know the original definitions but I got those colours from a HTML colour picker. Hope that's helpful. Thanks
    – Rachel
    Commented Jul 13, 2018 at 14:57

1 Answer 1

6

Thanks for the colors! I had no time to adjust the details.

\documentclass{article}
\usepackage[rgb]{xcolor}
\usepackage{karnaugh-map}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\definecolor{mycolor0000}{HTML}{F70400}
\definecolor{mycolor0100}{HTML}{AA0154}
\definecolor{mycolor1100}{HTML}{5600AB}
\definecolor{mycolor1000}{HTML}{0003FB}
\definecolor{mycolor0001}{HTML}{FF5500}
\definecolor{mycolor0101}{HTML}{AA5455}
\definecolor{mycolor1101}{HTML}{5555AB}
\definecolor{mycolor1001}{HTML}{0055FE}
\definecolor{mycolor0011}{HTML}{FFAA01}
\definecolor{mycolor0111}{HTML}{AAA956}
\definecolor{mycolor1111}{HTML}{56AAAA}
\definecolor{mycolor1011}{HTML}{00AAFF}
\definecolor{mycolor0010}{HTML}{FEFF02}
\definecolor{mycolor0110}{HTML}{A9FF54}
\definecolor{mycolor1110}{HTML}{55FFAA}
\definecolor{mycolor1010}{HTML}{0FF6FF}


\pgfplotsset{colormap={BR}{%
color(0)=(mycolor0000) color(1)=(mycolor0100) color(2)=(mycolor1100) color(3)=(mycolor1000)
color(4)=(mycolor0001) color(5)=(mycolor0101) color(6)=(mycolor1101) color(7)=(mycolor1001)
color(8)=(mycolor0011) color(9)=(mycolor0111) color(10)=(mycolor1111) color(11)=(mycolor1011)
color(12)=(mycolor0010) color(13)=(mycolor0110) color(14)=(mycolor1110) color(15)=(mycolor1010)
}}
\begin{document}

\begin{tikzpicture}[font=\small\sffamily]
    \begin{axis}
    [hide axis,shader=flat corner,%colormap name=BR,
    plot box ratio = 1 6 1,
    view = {0}{15}]
       \addplot3[surf,
       samples=32,point meta={int(mod(-atan2(y,x)+45+360,360)/90)+
       4*int(mod(atan2(z,sqrt(x^2+y^2)-2)+360+180,360)/90)
       },domain=0:360,y domain=0:360,
       z buffer=sort]
       ({(2+cos(x))*cos(y+90)}, 
        {(2+cos(x))*sin(y+90)}, 
        {sin(x)});
    \node at ({(2+cos(45))*cos(-90)},{(2+cos(45))*sin(-90)},{cos(45)}) {0111};  
    \node at ({(2+cos(45))*cos(-90)},{(2+cos(45))*sin(-90)},{0.15-cos(45)}) {0101}; 
    \fill ({(2-cos(45))*cos(90-50)},{(2-cos(45))*sin(90-50)},{cos(80)}) circle (1mm);   
    \end{axis}
\end{tikzpicture}
%
\begin{karnaugh-map}[4][4][1][][]
\end{karnaugh-map}
\end{document}

enter image description here

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .