I would do this using PGFPlots, putting three axis environments in a single tikzpicture and using \coordinates to draw the lines:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\pgfplotsset{
giannis/.style={
anchor=south west,
axis lines=left,
scale only axis,
width=3cm, height=2.5cm,
domain=0:8,
xtick=\empty, ytick=\empty,
ymin=0, ymax=6,
xmin=0, xmax=4,
no markers,
clip=false,
cycle list={
very thick, black\\
very thick, black\\
},
xlabel=Quantity, xlabel style={at=(current axis.right of origin), anchor=north},
ylabel=Price, ylabel style={at=(current axis.above origin), rotate=-90, anchor=east}
}
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[giannis, name=first, width=2cm]
\addplot coordinates {(0,5) (3,0)};
\coordinate [label=left:a] (a) at (axis cs:0,5);
\coordinate [label=left:d] (d) at (axis cs:0,3);
\node [above right] at (axis cs:1,3) {b};
\end{axis}
\node [yshift=-2ex] at ({current axis.outer south west}-|current axis.south) {(a)};
\begin{axis}[giannis, name=second, xshift=2em, at=(first.south east),width=2cm]
\addplot coordinates {(0,4) (3,0)};
\coordinate (p2-1) at (axis cs:0,3);
\end{axis}
\node [yshift=-2ex] at ({current axis.outer south west}-|current axis.south) {(b)};
\begin{axis}[giannis, xshift=2em, at=(second.south east)]
\addplot table {
0 5
0.5 2
0.5 3.5
2 0
};
\draw [very thick, densely dashed] (axis cs:0.5,2) -- (axis cs:0.5,3.5);
\addplot table {
0 5
0.5 4
3.5 0
};
\coordinate (a2) at (axis cs:0,5);
\coordinate [label=above right:i] (i) at (axis cs:1.3,3);
\coordinate (i2) at (i|-{axis cs:0,0});
\coordinate (p1-2) at (axis cs:0,5);
\coordinate (p2-2) at (axis cs:1.5,3);
\end{axis}
\node [yshift=-2ex] at ({current axis.outer south west}-|current axis.south) {(c)};
%\draw [thick, red] (a) -- (b);
\draw [gray, densely dashed] (a) -- (a2) (d) -- (i) -- (i2);
\end{tikzpicture}
\end{document}