3

I would like to reproduce the following plots but I have no idea how to do this. Does anyone of you know how to draw these curves in PGF/TikZ (or in any other suited way)?

Image 1

Image 2

  • What do you need help with? Drawing arrows? Dashed lines? Black dots? Labels to certain points? Writing sub and superscripts in math? We prefer particular questions rather than do this for me. What have you got so far? – Manuel Jul 22 '15 at 13:04
  • Salim provided good examples. When I do something like this, I tend to use the original image as a base layer and then sketch on top to make it roughly match. All done in tikz – daleif Jul 22 '15 at 13:19
  • @ manuel - i didn't have any MWE to provide you with so my question was how can i produce these graphs in general. that is to say, if i had any particuar question i would have posted one. – Marko Jul 22 '15 at 13:36
4

Here is a pgfplots solution. Based on salim bou's answer.

Plot 1

enter image description here

\documentclass[margin=10pt]{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    axis x line=bottom,
    axis y line=left,
    xmin=0, xmax=10, 
    ymin=0, ymax=10,
    xlabel={Dimension 1},
    ylabel={Dimension 2},
    ytick=\empty,
    xtick={0},
    ]
    \draw (axis cs:2.2,9.5) to [bend right=30] coordinate[pos=0.2] (l_i) (axis cs:8,.5);
    \fill (l_i) circle (2.2pt) node[above right] {$\ell_i$};

    \draw (axis cs:.5,6) to [bend right=10] coordinate[pos=0.8] (dl_j) (axis cs:9,3.5);
    \fill (dl_j) circle (2.2pt) node[above right] {$\ell_j'$};

    \fill (axis cs:1.5,6) circle (2.2pt) node[above right] {$\ell_j$};
    \fill (axis cs:6,2.5) circle (2.2pt) node[above right] {$\ell_i'$};
\end{axis}
\end{tikzpicture}

\end{document}

Plot 2

enter image description here

\documentclass[margin=10pt]{standalone}
\usepackage{pgfplots}
\usepackage{amsmath}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    axis x line=bottom,
    axis y line=left,
    xmin=0, xmax=10, 
    ymin=0, ymax=10,
    xlabel={income},
    ylabel={health},
    ytick=\empty,
    extra y ticks={8},
    extra y tick style={align=center, font=\scriptsize},
    extra y tick labels={normal\\health},
    xtick={0},
    extra x ticks={1,3},
    extra x tick labels={$\text{y}_\text{A}^*$,$\text{y}_\text{B}^*$},
    ]
    \addplot[solid, domain=0:9.5] {8};

    \draw (axis cs:1,8) to [bend right=10]
        coordinate[pos=0] (A') coordinate[pos=0.7] (A) (axis cs:8,3.5);
    \fill (A') circle (2.2pt) node[above right] {A'};
    \fill (A) circle (2.2pt) node[above right] {A};

    \draw (axis cs:3,8) to [bend right=30]
        coordinate[pos=0] (B') coordinate[pos=0.17] (B) coordinate[pos=0.6] (B'') (axis cs:8,1.5);
    \fill (B') circle (2.2pt) node[above right] {B'};
    \fill (B) circle (2.2pt) node[above right] {B};
    \fill (B'') circle (2.2pt) node[above right] {B''};

    \draw[dashed, thin] (axis cs:1,8) -- (axis cs:1,0);
    \draw[dashed, thin] (axis cs:3,8) -- (axis cs:3,0);
\end{axis}
\end{tikzpicture}

\end{document}
  • many thanks for providing me with pgfplots solution. really appreciate your help. – Marko Jul 23 '15 at 7:54
  • 1
    @FranzGötzkopf You are welcome. Take a look at the pgfplots manual the axis, labels, ... are highly customizable. – sergej Jul 23 '15 at 8:02
6

With tikz

  1. First plot

    \documentclass[margin=10pt]{standalone}
    \usepackage{tikz}
    \usetikzlibrary{arrows.meta}
    
    \begin{document}
    \begin{tikzpicture}[>=Triangle,thick]
    \draw[->](0,0)node[below]{$0$}--(6,0)node[below left]{Dimention1};
    \draw[->](0,0)--(0,6)node[below left]{Dimention2};
    
    \draw (1.2,5.3) to [bend right=30]  coordinate[pos=0.2] (l_i)(5,0.5);
    \fill (l_i)circle(2.2pt)node[above right]{$\ell_i$};
    
    \draw (5.5,2) to [bend left=10]  coordinate[pos=0.2] (l'_j)(0.5,3.5);
    \fill (l'_j)circle(2.2pt)node[above right]{$\ell'_j$};
    
    \fill (1,3.5)circle(2.2pt)coordinate(l_j)node[above right]{$\ell_j$};
    \fill (3.6,1.5)circle(2.2pt)coordinate(l'_i)node[above right]{$\ell'_i$};
    \end{tikzpicture}
    
    \end{document}
    
  2. Second plot

    \documentclass[margin=10pt]{standalone}
    \usepackage{tikz}
    \usetikzlibrary{arrows.meta}
    
    \begin{document}
    \begin{tikzpicture}[>=Triangle,thick]
    \draw[->](0,0)node[below]{$0$}--(6,0)node[below left]{income};
    \draw[->](0,0)--(0,6)node[below left]{heath};
    \draw(0,5)node [left,text width=1cm]{normal health}--(5.5,5);
    
    \draw (0.8,5)coordinate(A') to [bend right=20] coordinate[pos=0.85] (A)  (5.5,2);
    
    \draw (2,5)coordinate(B') to [bend right=20] coordinate[pos=0.2] (B) coordinate[pos=0.7] (B'')  (5.5,1);
    
    \foreach \i in{A,B,A',B'}{\fill (\i)circle (2.2pt)node[above right]{$\i$};}
    \fill (B'')circle (2.2pt)node[below left]{$B''$};
    
    \foreach \i/\j in{A'/y_1^*,B'/y_2^*}{\draw[dashed](\i)--+(0,-5)node[below]{$\j$};}
    
    \end{tikzpicture}
    
    \end{document}
    
  • @ salim bou - many thanks for assistance. that's exactly what i have been looking for. – Marko Jul 22 '15 at 13:27
  • 1
    $\ell$'s are easier to distinguish from $1$'s than $l$'s. They're also in the original graphs. – JPi Jul 22 '15 at 15:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.