Indeed, as Dror pointed out the right way to go is to exploit the library decorations.markings
.
Here is a solution that provides a new style arrowed pattern
(similarly to dotted pattern
from Dotted lines in TikZ with round dots) that simplifies the way in which you have to use the library. Moreover, it is possible to customize the distance between arrows, the arrows' color and tip.
The code:
\documentclass[12pt,a4paper]{article}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\pgfkeys{/tikz/.cd,
arrow color/.initial=black,
arrow color/.get=\arrowcolor,
arrow color/.store in=\arrowcolor,
arrow distance/.initial=5mm,
arrow distance/.get=\arrowdistance,
arrow distance/.store in=\arrowdistance,
arrow tip/.initial=to,
arrow tip/.get=\arrowtip,
arrow tip/.store in=\arrowtip,
}
\tikzset{arrowed pattern/.style args={between #1 and #2}{
postaction=decorate,
decoration={
markings,
mark=
between positions #1 and #2 step \arrowdistance
with
{
\arrow[\arrowcolor,arrow options]{\arrowtip}
}
}
},
arrowed pattern/.default={between 0 and 1},
arrow options/.style={
thick
}
}
\begin{document}
\begin{tikzpicture}
\draw[->, very thick](0,0)--(6,0) node[below]{$Q$};
\draw[->, very thick](0,0)--(0,6) node[left]{$P$};
\draw[-, JungleGreen,
arrow tip=stealth,
arrowed pattern=between 0.25 and 0.6] (5,0)
node[below]{$200$}--(0,5) node[left] {$50$};
\draw[dotted,
arrowed pattern=between 0.6 and 0.95,
arrow color=red,
arrow distance=2mm,
] (0,1) node[left](10){$10$}--(4,1);
\draw[dotted] (4,1)--(4,0) node[below](160){$160$};
\node[above right] at (4,1) {$A$};
\draw[dotted] (0,3) node[left](30){$30$}--(2,3);
\draw[dotted] (2,3)--(2,0) node[below](80){$80$};
\node[above right] at (2,3) {$B$};
% dots
\fill (2,3) circle (1.5pt);
\fill (4,1) circle (1.5pt);
% curved arrows
\draw(160.south) edge[->,bend left] (80.south);
\draw(10.west) edge[->,bend left] (30.west);
\end{tikzpicture}
\end{document}
The result: