\begin{tikzpicture}[trim left = -1.05cm]
\newcommand{\scale}[0]{0.55}
\newcommand{\circrad}[0]{1.65}
\newcommand{\thickwidth}[0]{1.0mm}
\newcommand{\axislen}[0]{1}
\newcommand{\centerA}[0]{0}
\newcommand{\centerGen}[0]{3.0}
\newcommand{\centerBird}[0]{6.0}
\newcommand{\centerEnc}[0]{9.0}
\newcommand{\centerB}[0]{11.0}
\newcommand{\centerH}[0]{14.0}
\newcommand{\Hhalfwidth}[0]{17}
\newcommand{\figurehheight}[0]{2.3cm}
\newcommand{\centerC}[0]{16.0}
\definecolor{color0}{RGB}{55,162,219}
\definecolor{color1}{RGB}{255,71,76}
\definecolor{color2}{RGB}{178,51,120}
\definecolor{color3}{RGB}{232,187,44}
\definecolor{color4}{RGB}{25,161,108}
\definecolor{color5}{RGB}{40,97,205}
\definecolor{color6}{RGB}{240,158,7}
\definecolor{color7}{RGB}{180,43,40}
\definecolor{color8}{RGB}{156,158,114}

%\begin{scope}
%  \clip (0,\scale*2) circle (\circrad); % Class
%  \fill[gray!80,opacity=0.9] (\scale*\centerx,-\scale*1) circle (\circrad);
%\end{scope}

%\begin{scope}
%  \clip (0,\scale*2) circle (\circrad); % Class
%  \fill[color7!50,opacity=0.5] (-\scale*\centerx,-\scale*1) circle (\circrad);
%\end{scope}

%\node[text width=1.2cm,  rotate=-55] at (-2.1*\scale, 0.7*\scale) {\tiny$label$};

%\node[text width=2cm,  rotate=55] at (2.3*\scale, 1.2*\scale) {\tiny$Ilabel$};

% Idk if we need this
%\node[text width=2cm,  rotate=0] at (0.55*\scale, -0.4*\scale) {\tiny$I(C;\mask;\xlp)$};

%\node[text width=1.5cm, color=color7] at (-4.0*\scale, 3.5*\scale) (texticx) {$I(\xlp;C)$};

%\node[text width=1.5cm, color=gray] at (4.5*\scale, 3.5*\scale) (texticm) {$I(C;\mask)$};

%\draw[dotted, very thick, color=color7] (texticx.south) -- (-1.6*\scale, 1.35*\scale);

%\draw[dotted, very thick, color=gray] (texticm.south) -- (+1.6*\scale, 1.35*\scale);

%\draw[color=color2, thick] (0,\scale*2) circle (\circrad) node %[label={[shift={(0.0,0.4)}]$H(C)$}] {};
%\draw[color=color4, thick] (\scale*-\centerx,-\scale*1) circle (\circrad) node %[label={[shift={(-0.7,-0.4)}]$H(\xlp)$}] {};
%\draw[color=color5, thick] (\scale*\centerx,-\scale*1) circle (\circrad) node %[label={[shift={(+0.7,-0.4)}]$H(\mask)$}] {};

% First coordinate system.
\draw[->, color=color7, thick]  (\centerA, -\axislen) -- (\centerA, \axislen) node[above] {\parbox{2cm}{\centering wingspan\\$\vz_2$}};
\draw[->, color=color5, thick]  (\centerA-\axislen, 0) -- (\centerA+\axislen, 0) node[below=-6pt] {\hspace{0.5cm}\parbox{2cm}{\centering$\vz_1$\\ beak length}};
\node at (\centerA, -1.5) {$\vz$};
\draw[rotate=45, dotted, thick] (\centerA, 0) ellipse ({\axislen} and {0.2*\axislen});
\draw[rotate=45, dotted, thick] (\centerA, 0) ellipse ({0.5\axislen} and {0.1*\axislen});

\node [trapezium, trapezium angle=70, minimum width=25mm, draw, rotate=90, thick] at (\centerGen,0) {\rotatebox{-90}{$\vg$}};
%\node[text width=1.2cm] at (\centerGen,0) {\tiny$label$};
%image
\node (cpart1) at (\centerBird, 0) {\includegraphics[width=3.2cm]{figures/Bird1.jpg}};
\node at (\centerBird, -1.5) {$\vx$};
\node [trapezium, trapezium angle=70, minimum width=25mm, draw, rotate=-90, thick] at (\centerEnc,0) {\rotatebox{90}{$\vf$}};

% Second coordinate system.
\draw[->, thick]  (\centerB, -\axislen) -- (\centerB, \axislen) node[above] {$e_2$};
\draw[->, thick]  (\centerB-\axislen, 0) -- (\centerB+\axislen, 0) node[right] {$e_1$};

\draw[rotate around={135:(\centerB,0)}, dotted, thick] (\centerB, 0) ellipse ({\axislen} and {0.3*\axislen});
\draw[rotate around={135:(\centerB,0)}, dotted, thick] (\centerB, 0) ellipse ({0.5\axislen} and {0.15*\axislen});

\draw[->, color=color5, thick, rotate around={120:(\centerB,0)}]  (\centerB-\axislen, 0) -- (\centerB+\axislen, 0) node[right] {$\vz_1$};
\draw[->, color=color7, thick, rotate around={60:(\centerB,0)}=10]  (\centerB, -\axislen) -- (\centerB, \axislen) node[above] {$\vz_2$};
\node at (\centerB, -1.5) {$\ve$};

\node[text width=2cm] at (\centerH-0.1, 0) {$\circ$};
\node (rect) at (\centerH, 0) [draw,thick,minimum width={2*\Hhalfwidth}, minimum height={2*\Hhalfwidth}] {$\mM$};

\draw[->, thick]  (\centerC, -1.2*\axislen) -- (\centerC, 1.2*\axislen) node[above] {\parbox{4cm}{\centering wingspan (recovered)\\$\vm_2$}};
\draw[->, thick]  (\centerC-1.2\axislen, 0) -- (\centerC+1.2\axislen, 0) node[below=-6pt] {\hspace{0.7cm}\parbox{2cm}{\centering$\vm_1$\\ beak length\\ (recovered)}};;
\draw[->, color=color7, thick]  (\centerC, -0.8*\axislen) -- (\centerC, 0.8*\axislen) node[right] {$\vz_2$};
\draw[->, color=color5, thick]  (\centerC-0.8*\axislen, 0) -- (\centerC+0.8*\axislen, 0) node[above] {$\vz_1$};
\draw[rotate around={45:(\centerC,0)}, dotted, thick] (\centerC, 0) ellipse ({\axislen} and {0.2*\axislen});
\draw[rotate around={45:(\centerC,0)}, dotted, thick] (\centerC, 0) ellipse ({0.5\axislen} and {0.1*\axislen});

% Description boxes.
\node (unknown) at (1.3, 0.2) [draw, rounded corners, color=color8, thick, minimum width={2.25*\figurehheight}, minimum height={1.8*\figurehheight}, label=below:\textcolor{color8}{unknown data-generating process}]{};

\node (provided) at (8.3, 0.2) [draw, rounded corners, color=color5, thick, minimum width={8.5cm}, minimum height={1.8*\figurehheight}, label=below:\textcolor{color5}{{provided imperfect encoder}}]{};

\node (posthoc) at (15.7, 0.2) [draw, rounded corners, color=color4, thick, minimum width={6cm}, minimum height={1.8*\figurehheight}, label=below:{\textcolor{color4}{desired post-hoc concept discovery}}]{};
\end{tikzpicture}