1

I am trying to create a tikz picture like the one below. I would like to be able to customize the G,H, f expressions.

Function Bijection

Any help is greatly appreciated. Thank you!

  • 3
    Hi, welcome. What is the difficult part? A couple of posts that might be useful: https://tex.stackexchange.com/questions/533190/ https://tex.stackexchange.com/questions/19987 https://tex.stackexchange.com/questions/56139/ https://tex.stackexchange.com/questions/526187/ – Torbjørn T. Jan 07 '21 at 18:24
  • @TorbjørnT. Thanks for your reply. The posts were very useful and I ended up using Mathcha as mentioned in one of the references which made it easy in the end. – John Arens Jan 18 '21 at 22:52

3 Answers3

3

Maybe you can adapt the code below I use in my lesson…

\documentclass[11pt,twoside]{report}
\usepackage{tikz}
\usetikzlibrary{%
    ,arrows
    ,arrows.meta
    ,calc
    ,fit
    ,hobby
    ,positioning
}

\begin{document} \begin{figure}[!h] \centering \begin{tikzpicture}[>=latex'] \pgfmathsetmacro{\rU}{.7} \pgfmathsetmacro{\rV}{1} \draw %[postaction=show curve control] (0, 0) to [closed, curve through = {(1, 1) .. (1, .5) .. (3, .5)}] (4,0); \coordinate (a) at (2.5, -.6); \fill[red] (a) circle [radius=2pt] node [anchor=north] {$a$}; \coordinate (x) at ($(2.5, -.6)+(10:.7*\rU cm)$); \fill (x) circle [radius=2pt] node [anchor=south] {$x$}; \draw [dashed, red] (a) circle [radius=\rU cm]; \draw [red] (a) --++ (160:\rU cm) node [above, sloped, pos=.5] {$\eta$};

\begin{scope}[xshift=7cm]
\draw [use Hobby shortcut]
([closed] 0, 0) .. (1, .5) .. (2, 0) .. (3, .5) .. (4, 0);
\coordinate (fa) at (2.5, -1.6);
\fill[blue] (fa) circle [radius=2pt] node [anchor=north] {$f(a)$};
\coordinate (fx) at ($(2.5, -1.6)+(170:.7*\rU cm)$);
\fill (fx) circle [radius=2pt] node [anchor=south] {$f(x)$};
\draw [dashed, blue] (fa) circle [radius=\rV cm];
\draw [blue] (fa) --++ (20:\rV cm) node [above, sloped, pos=.5] {$\epsilon$};
\end{scope}
\draw [->, green] (x) to [bend left=20] (fx);
\end{tikzpicture}
\caption{Continuity}

\end{figure} \end{document}

enter image description here

NBur
  • 4,326
  • 10
  • 27
1

Just for fun....

\documentclass[a4paper,12pt]{article}
\usepackage{amsmath,amssymb}
\usepackage{tikz}
\usepackage{graphicx}
\usepackage{xcolor}

\begin{document} \begin{figure}[h] \centering \tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt

\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1] %uncomment if require: \path (0,300); %set diagram left start at 0, and has height of 300

%Shape: Polygon Curved [id:ds23961530607472992] \draw [draw opacity=0][fill={rgb, 255:red, 155; green, 155; blue, 155 } ,fill opacity=1 ] (96.5,87) .. controls (158,2) and (223,84) .. (229.5,119) .. controls (236,154) and (237.5,191) .. (208.5,196) .. controls (179.5,201) and (173.5,154) .. (140.5,153) .. controls (107.5,152) and (35,172) .. (96.5,87) -- cycle ; %Shape: Polygon Curved [id:ds5434810466865279] \draw [draw opacity=0][fill={rgb, 255:red, 155; green, 155; blue, 155 } ,fill opacity=1 ] (343.5,136) .. controls (326.5,93) and (352.5,59) .. (400.5,64) .. controls (448.5,69) and (443.5,145) .. (473,155) .. controls (502.5,165) and (422,212) .. (427.5,186) .. controls (433,160) and (360.5,179) .. (343.5,136) -- cycle ; %Shape: Circle [id:dp31671262224381147] \draw [fill={rgb, 255:red, 0; green, 0; blue, 0 } ,fill opacity=1 ] (186,154) .. controls (186,147.37) and (191.37,142) .. (198,142) .. controls (204.63,142) and (210,147.37) .. (210,154) .. controls (210,160.63) and (204.63,166) .. (198,166) .. controls (191.37,166) and (186,160.63) .. (186,154) -- cycle ; %Shape: Circle [id:dp8563521693066509] \draw [fill={rgb, 255:red, 0; green, 0; blue, 0 } ,fill opacity=1 ] (410,139) .. controls (410,132.37) and (415.37,127) .. (422,127) .. controls (428.63,127) and (434,132.37) .. (434,139) .. controls (434,145.63) and (428.63,151) .. (422,151) .. controls (415.37,151) and (410,145.63) .. (410,139) -- cycle ; %Shape: Circle [id:dp23072888295227378] \draw [fill={rgb, 255:red, 0; green, 0; blue, 0 } ,fill opacity=1 ] (134,103) .. controls (134,96.37) and (139.37,91) .. (146,91) .. controls (152.63,91) and (158,96.37) .. (158,103) .. controls (158,109.63) and (152.63,115) .. (146,115) .. controls (139.37,115) and (134,109.63) .. (134,103) -- cycle ; %Shape: Circle [id:dp6011767330027358] \draw [fill={rgb, 255:red, 0; green, 0; blue, 0 } ,fill opacity=1 ] (359,97) .. controls (359,90.37) and (364.37,85) .. (371,85) .. controls (377.63,85) and (383,90.37) .. (383,97) .. controls (383,103.63) and (377.63,109) .. (371,109) .. controls (364.37,109) and (359,103.63) .. (359,97) -- cycle ; %Curve Lines [id:da8892360866490041] \draw [color={rgb, 255:red, 27; green, 68; blue, 233 } ,draw opacity=1 ][line width=1.5] (163,97) .. controls (202.4,67.45) and (307.29,68.95) .. (354.39,89.07) ; \draw [shift={(356.5,90)}, rotate = 204.54] [color={rgb, 255:red, 27; green, 68; blue, 233 } ,draw opacity=1 ][line width=1.5] (19.89,-8.92) .. controls (12.65,-4.19) and (6.02,-1.21) .. (0,0) .. controls (6.02,1.21) and (12.65,4.19) .. (19.89,8.92) ; %Curve Lines [id:da11406262223883701] \draw [color={rgb, 255:red, 27; green, 68; blue, 233 } ,draw opacity=1 ][line width=1.5] (404.5,139) .. controls (338.54,128.33) and (250,152.47) .. (218.28,161.23) ; \draw [shift={(215.5,162)}, rotate = 344.58000000000004] [color={rgb, 255:red, 27; green, 68; blue, 233 } ,draw opacity=1 ][line width=1.5] (19.89,-8.92) .. controls (12.65,-4.19) and (6.02,-1.21) .. (0,0) .. controls (6.02,1.21) and (12.65,4.19) .. (19.89,8.92) ;

% Text Node \draw (117,163.4) node [anchor=north west][inner sep=0.75pt] [font=\LARGE] {$G$}; % Text Node \draw (458,76.4) node [anchor=north west][inner sep=0.75pt] [font=\LARGE] {$H$}; % Text Node \draw (259,47.4) node [anchor=north west][inner sep=0.75pt] [font=\large] {$f$}; % Text Node \draw (284,154.4) node [anchor=north west][inner sep=0.75pt] [font=\large] {$f^{-1}$};

\end{tikzpicture}

\caption{How do I generate a function bijection image in tikz?} \end{figure}

\end{document}

enter image description here

Sebastiano
  • 54,118
0

I ended up using Mathcha

Here is the code:

\documentclass{article}

\usepackage{physics} \usepackage{mathrsfs,amsmath} \usepackage{tikz} \usepackage{mathdots} \usepackage{yhmath} \usepackage{cancel} \usepackage{color} \usepackage{siunitx} \usepackage{array} \usepackage{multirow} \usepackage{amssymb} \usepackage{gensymb} \usepackage{tabularx} \usepackage{booktabs} \usetikzlibrary{fadings} \usetikzlibrary{patterns} \usetikzlibrary{shadows.blur} \usetikzlibrary{shapes} \pagestyle{empty} \begin{document}

% Gradient Info

\tikzset {_6h2o4wtd6/.code = {\pgfsetadditionalshadetransform{ \pgftransformshift{\pgfpoint{0 bp } { 0 bp } } \pgftransformrotate{0 } \pgftransformscale{2 } }}} \pgfdeclarehorizontalshading{_weaugwrqa}{150bp}{rgb(0bp)=(0.71,0.74,0.78); rgb(37.5bp)=(0.71,0.74,0.78); rgb(37.5bp)=(0.51,0.55,0.58); rgb(62.410714285714285bp)=(0.31,0.4,0.46); rgb(100bp)=(0.31,0.4,0.46)} \tikzset{_czeaqdv2k/.code = {\pgfsetadditionalshadetransform{\pgftransformshift{\pgfpoint{0 bp } { 0 bp } } \pgftransformrotate{0 } \pgftransformscale{2 } }}} \pgfdeclarehorizontalshading{_2swwhag5a} {150bp} {color(0bp)=(transparent!0); color(37.5bp)=(transparent!0); color(37.5bp)=(transparent!0); color(62.410714285714285bp)=(transparent!73); color(100bp)=(transparent!73) } \pgfdeclarefading{_xqz0zbkz5}{\tikz \fill[shading=_2swwhag5a,_czeaqdv2k] (0,0) rectangle (50bp,50bp); } \tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt

\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1] %uncomment if require: \path (0,300); %set diagram left start at 0, and has height of 300

%Shape: Rectangle [id:dp5233667101372301] \path [shading=_weaugwrqa,_6h2o4wtd6,path fading= _xqz0zbkz5 ,fading transform={xshift=2}] (135,44) -- (631.3,44) -- (631.3,262.2) -- (135,262.2) -- cycle ; % for fading \draw (135,44) -- (631.3,44) -- (631.3,262.2) -- (135,262.2) -- cycle ; % for border

%Shape: Polygon Curved [id:ds556956836823167] \draw [line width=1.5] (235.3,145.2) .. controls (217.3,135.2) and (198.3,98.2) .. (245.3,76.2) .. controls (292.3,54.2) and (321,89) .. (320.3,87.2) .. controls (320.3,88.2) and (346.3,103.2) .. (342.3,153.2) .. controls (338.3,203.2) and (258.3,250.2) .. (238.3,220.2) .. controls (218.3,190.2) and (253.3,155.2) .. (235.3,145.2) -- cycle ; %Shape: Polygon Curved [id:ds47340645770050416] \draw [line width=1.5] (451.3,117.2) .. controls (458.3,106.2) and (504.3,63.2) .. (539.3,97.2) .. controls (574.3,131.2) and (513.3,131.2) .. (543.3,181.2) .. controls (573.3,231.2) and (469.3,223.2) .. (449.3,193.2) .. controls (429.3,163.2) and (444.3,128.2) .. (451.3,117.2) -- cycle ; %Curve Lines [id:da4785441068178986] \draw [line width=1.5] (283.97,139) .. controls (317.5,113.85) and (358.32,99.41) .. (392.27,97.2) .. controls (424.71,95.09) and (459.04,113.43) .. (478.61,132.5) ; \draw [shift={(481.27,135.2)}, rotate = 226.47] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (11.61,-5.58) -- (0,0) -- (11.61,5.58) -- cycle ; %Curve Lines [id:da03036214425379491] \draw [line width=1.5] (304.71,190.67) .. controls (350.31,221.84) and (447.3,214.45) .. (486.3,185.2) ; \draw [shift={(301.3,188.2)}, rotate = 37.69] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (11.61,-5.58) -- (0,0) -- (11.61,5.58) -- cycle ; %Shape: Circle [id:dp7942098562220739] \draw [fill={rgb, 255:red, 0; green, 0; blue, 0 } ,fill opacity=1 ] (273.92,144) .. controls (273.92,141.78) and (275.73,139.97) .. (277.95,139.97) .. controls (280.17,139.97) and (281.97,141.78) .. (281.97,144) .. controls (281.97,146.22) and (280.17,148.03) .. (277.95,148.03) .. controls (275.73,148.03) and (273.92,146.22) .. (273.92,144) -- cycle ; %Shape: Circle [id:dp4174234972144677] \draw [fill={rgb, 255:red, 0; green, 0; blue, 0 } ,fill opacity=1 ] (486.27,140.2) .. controls (486.27,137.98) and (488.08,136.17) .. (490.3,136.17) .. controls (492.52,136.17) and (494.32,137.98) .. (494.32,140.2) .. controls (494.32,142.42) and (492.52,144.23) .. (490.3,144.23) .. controls (488.08,144.23) and (486.27,142.42) .. (486.27,140.2) -- cycle ; %Shape: Circle [id:dp9577878414443755] \draw [fill={rgb, 255:red, 0; green, 0; blue, 0 } ,fill opacity=1 ] (286.95,182) .. controls (286.95,179.78) and (288.75,177.97) .. (290.97,177.97) .. controls (293.2,177.97) and (295,179.78) .. (295,182) .. controls (295,184.22) and (293.2,186.03) .. (290.97,186.03) .. controls (288.75,186.03) and (286.95,184.22) .. (286.95,182) -- cycle ; %Shape: Circle [id:dp5217310121519758] \draw [fill={rgb, 255:red, 0; green, 0; blue, 0 } ,fill opacity=1 ] (495.27,181.2) .. controls (495.27,178.98) and (497.08,177.17) .. (499.3,177.17) .. controls (501.52,177.17) and (503.32,178.98) .. (503.32,181.2) .. controls (503.32,183.42) and (501.52,185.23) .. (499.3,185.23) .. controls (497.08,185.23) and (495.27,183.42) .. (495.27,181.2) -- cycle ;

% Text Node \draw (197,186) node [anchor=north west][inner sep=0.75pt] [font=\huge] [align=left] {$\displaystyle T$}; % Text Node \draw (567,179) node [anchor=north west][inner sep=0.75pt] [font=\huge] [align=left] {$\displaystyle W$}; % Text Node \draw (380,65) node [anchor=north west][inner sep=0.75pt] [font=\LARGE] [align=left] {$\displaystyle \ \mathscr{F}\ $}; % Text Node \draw (378,214) node [anchor=north west][inner sep=0.75pt] [font=\LARGE] [align=left] {$\displaystyle \mathscr{F}^{-1}$};

\end{tikzpicture}

\end{document}

Bijection Image

Thanks all for your help!