# Drawing tangent convex and concave functions using Tikz or pgfplots

I am trying to draw the following graph in latex (using xetex as the compiler) with Tikz/pgfplots. IC_1, IC_2 and IC_3 are strictly convex. OC_a and OC_b are strictly concave. IC_1 is tangent to OC_a and OC_b at X^a and X^b respectively. IC_2 and IC_3 are both tangent to OC_a at X^a.

Any help would be highly appreciated! Thanks!

• Welcome on TeX.SE. It's kinda customary here to show that you've been looking for an answer and provide a Minimal Working Example so that you can help us to help you. I see the topics here is microeconomics. take a look at tzplot. You'll find examples of indifference curves with tangents. pages : 27-29-35...
– JeT
Commented Mar 24, 2022 at 20:06
• Will keep in mind! Thanks I was not aware of this package! Looks super useful.
– mzec
Commented Mar 24, 2022 at 20:58

Using the tzplot package:

\documentclass[tikz,border=5mm]{standalone}

\usepackage{tzplot}[scale=.6]

\begin{document}

\begin{tikzpicture}[font=\scriptsize]
% \tzhelplines(10,10)
\tzaxes*(10,10){$x_1$}{$x_2$}[l]
\tzto[blue,bend right,thick]"IC1"(1,8)(9,2){$IC^1$}[r]
\tzvXpointat*[red]{IC1}{3}(Xa){$x^a$}[[red]45]
\tzvXpointat*[teal]{IC1}{6}(Xb){$x^b$}[[teal]20]
\tzproj[red](Xa){$x_1^a$}{$x_2^a$}
\tzproj[teal](Xb){$x_1^b$}{$x_2^b$}
\tzcoors($(Xa)+(-2.5,1.5)$)(OCa1)($(Xa)+(2,-3.5)$)(OCa2);
\tzplotcurve[red,thick](OCa1){$OC_a$}[-90](Xa)(OCa2);
\tzcoors($(Xb)+(-5,1.2)$)(OCb1)($(Xb)+(3,-2)$)(OCb2);
\tzplotcurve[teal,thick](OCb1){$OC_b$}[90](Xb)(OCb2);
\tzcoors($(Xa)+(-1.5,3)$)(IC2L)($(Xa)+(3,-1.5)$)(IC2R);
\tzplotcurve[blue,thick,dashed](IC2L)(Xa)(IC2R){$IC^2$}[r];
\tzcoors($(Xa)+(-1.2,3)$)(IC3L)($(Xa)+(3,-1.2)$)(IC3R);
\tzplotcurve[blue,thick,dotted](IC3L)(Xa)(IC3R){$IC^3$}[45];
\end{tikzpicture}

\end{document}
• Thanks so much InSung! really appreciate it. Also got to know about your package. Will definitely check it out in more details. I had to make one small edit, else for some reason, latex was giving me an error and not compiling. In the 5th last line of the code, instead of [r] I gave it a positional argument value like [15] and it compiled.
– mzec
Commented Mar 24, 2022 at 21:01
• @InSungCho I'm updating my couses in microeconomics with your package. Plenty of cases to follow :)
– JeT
Commented Mar 24, 2022 at 21:11
• @InSungCho Also, I think your work largely deserve a visual page like this one :)
– JeT
Commented Mar 24, 2022 at 21:18
• @mzec If you update tzplot to ver.2, both [r] and [15] will work. Commented Mar 25, 2022 at 4:00
• Thanks much @InSungCho ! that worked!
– mzec
Commented Mar 26, 2022 at 2:49