# How to draw the product topology diagram for $R^3$?

How to draw the product topology diagram for $R^3$? How to draw this figure?

• With use of tikz-cd this should not be so difficult ... What you try so far? – Zarko Feb 22 at 21:03
• There is also xy package :-))) used very rarely but it gives the same results even if it's a bit complicated. – Sebastiano Feb 22 at 21:14
• xy is not as good as tikz-cd.Try drawing monomorphisms or inclusions and you will see that the spacing is not right – Luis Turcio Feb 23 at 1:56
• [for posterity] Questions about how to draw specific graphics that just post an image of the desired result are really not reasonable questions to ask on the site. Please post a minimal compilable document showing that you've tried to produce the image and then people will be happy to help you with any specific problems you may have. See minimal working example (MWE) for what needs to go into such a document. – Alessandro Cuttin Mar 17 at 11:29

This is a small variation of this answer. One thing that requires a bit attention is the left-aligned column, which one gets with

/tikz/column 2/.style={nodes={align=left,text width={width("$\realR^3=\realR\times\realR\times\realR$")}}}


Code (with two different double-stroke R's)

\documentclass{article}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{dsfont}
\newcommand{\realR}{\mathds{R}}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}[row sep=2em,column sep=2.5em, /tikz/column 2/.style={nodes={align=left,text width={width("\realR^3=\realR\times\realR\times\realR")}}}] & \realR & \\ \mathcal{W} \arrow[ur,out=80,in=180,"g_1"] \arrow[dr,out=-80,in=180,"g_2"] \arrow[rr,out=-90,in=-110,"g_3",overlay] \arrow[r,dashed,"g"] & \realR^3=\realR\times\realR\times\realR \arrow[r,"Pr_3"] & \realR\\ & \realR & \\ \end{tikzcd}
Or with another double-stroke R\renewcommand{\realR}{\mathbb{R}}
\begin{tikzcd}[row sep=2em,column sep=2.5em, /tikz/column 2/.style={nodes={align=left,text width={width("\realR^3=\realR\times\realR\times\realR")}}}] & \realR & \\ \mathcal{W} \arrow[ur,out=80,in=180,"g_1"] \arrow[dr,out=-80,in=180,"g_2"] \arrow[rr,out=-90,in=-110,"g_3",overlay] \arrow[r,dashed,"g"] & \realR^3=\realR\times\realR\times\realR \arrow[r,"Pr_3"] & \realR\\ & \realR & \\ \end{tikzcd}
\end{document}


Addendum: a supplement to Zarko's answer, in which the shift of the arrows gets computed from the inner sep, outer sep and the width of the real R. ;-)

\documentclass{article}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{dsfont}
\newcommand{\realR}{\mathds{R}}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}[row sep=2em,column sep=2.5em, /tikz/column 2/.style={nodes={align=left,text width={width("\realR^3=\realR\times\realR\times\realR")}}}] & \realR & \\ \mathcal{W} \arrow[ur,out=80,in=180,"g_1"] \arrow[dr,out=-80,in=180,"g_2"] \arrow[rr,out=-90,in=-110,"g_3",overlay] \arrow[r,dashed,"g"] & \realR^3=\realR\times\realR\times\realR \arrow[r,"Pr_3"] % shift by half the width of the letter R + inner sep + outer sep (both equal 2pt) \arrow[u,start anchor={[xshift={width("\realR")/2+4pt}]north west}, end anchor={[xshift={width("\realR")/2+4pt}]south west},"P_{p_1}"'] \arrow[d,start anchor={[xshift={width("\realR")/2+4pt}]south west}, end anchor={[xshift={width("\realR")/2+4pt}]north west},"P_{p_2}"] & \realR\\ & \realR &\\ \end{tikzcd}
Or with another double-stroke R\renewcommand{\realR}{\mathbb{R}}
\begin{tikzcd}[row sep=2em,column sep=2.5em, /tikz/column 2/.style={nodes={align=left,text width={width("\realR^3=\realR\times\realR\times\realR")}}}] & \realR & \\ \mathcal{W} \arrow[ur,out=80,in=180,"g_1"] \arrow[dr,out=-80,in=180,"g_2"] \arrow[rr,out=-90,in=-110,"g_3",overlay] \arrow[r,dashed,"g"] & \realR^3=\realR\times\realR\times\realR \arrow[r,"Pr_3"] % shift by half the width of the letter R + inner sep + outer sep (both equal 2pt) \arrow[u,start anchor={[xshift={width("\realR")/2+4pt}]north west}, end anchor={[xshift={width("\realR")/2+4pt}]south west},"P_{p_1}"'] \arrow[d,start anchor={[xshift={width("\realR")/2+4pt}]south west}, end anchor={[xshift={width("\realR")/2+4pt}]north west},"P_{p_2}"] & \realR\\ & \realR & \\ \end{tikzcd}
\end{document}


As supplement to @Schrödinger's cat's answer. Added are vertical lines labeled P_{r_1} and P_{r_2} (which are shown in OP image but not in his answer) and made some small changes in image code:

\documentclass[margin=3mm,varwidth]{standalone}
\usepackage{tikz-cd}
\usepackage{amssymb}

\begin{document}
$\begin{tikzcd}[row sep=huge, /tikz/column 2/.style={nodes={text width = {width("\mathbb{R}^3= \mathbb{R}\times\mathbb{R}\times\mathbb{R}")}}}, ] & \mathbb{R} \ar[d,start anchor={[xshift=1em]south west}, end anchor={[xshift=1em]north west}, "P_{r_1}",<-] & \\ \mathcal{W} \ar[ur,bend left,"g_1"] \ar[r,dashed,"g"] \ar[dr,bend right,"g_2"] \ar[rr,bend right=90,"g_3",looseness=1.5] & \mathbb{R}^3=\mathbb{R}\times\mathbb{R}\times\mathbb{R} \ar[r,"P_{r_3}"] & \mathbb{R} \\ & \mathbb{R} \ar[u,start anchor={[xshift=1em]north west}, end anchor={[xshift=1em]south west}, "P_{r_2}" ',<-] & \\ \end{tikzcd}$
\end{document}


I will add the worst answer here because I don't like diagrams with many curved arrows or that g_2 is so close to g_3.

\documentclass{article}

\usepackage{mathtools}
\usepackage{amssymb}
\usepackage{tikz-cd}

\begin{document}

\begin{tikzcd}
& \mathbb{R}^3\\
W\ar{ru}{g_1}\ar[dashed]{r}[description]{g}\ar{rd}[swap]{g_2}\ar[out=270,in=270]{rrr}
& \mathbb{R}^3\ar{u}[swap]{pr_1}\ar{d}{pr_2}
&[-11mm] =\mathbb{R}\times\mathbb{R}\times\mathbb{R}\ar{r}{pr_3}
&\mathbb{R}\\
& \mathbb{R}
\end{tikzcd}

\end{document}