\documentclass{standalone} \usepackage{pgfplots} \usepackage{tikz} \usetikzlibrary{positioning} \usetikzlibrary{decorations.text} \usetikzlibrary{decorations.pathmorphing} \usetikzlibrary{arrows.meta} \begin{document} \begin{tikzpicture} \tikzstyle{training}=[red, thick,samples=200,dashed] \tikzstyle{testing}=[green, thick,samples=200] \tikzstyle{arrow}=[<->, Latex-Latex, thick] \begin{axis}[ legend pos=north east, axis x line=middle, axis y line=middle, grid = major, width=14cm, height=8cm, grid style={dashed, white}, % gray!30 xmin=0, % start the diagram at this x-coordinate xmax= 104, % end the diagram at this x-coordinate ymin= 0, % start the diagram at this y-coordinate ymax= 0.79, % end the diagram at this y-coordinate axis background/.style={fill=white}, xlabel=Training samples, ylabel=Error, tick align=outside, minor tick num=-3, tension=0.08] \addplot[domain=1:100, testing] {1/(x+2)+0.4}; \addplot[domain=1:100, training] {0.4-(1/(x+2))}; % \draw[dashed,thick] (axis cs:0,0.4) -- (axis cs:110,0.4); \draw[dashed,thick] (axis cs:0,0.2) -- (axis cs:110,0.2); \path[arrow] (axis cs:80,0.2) edge node[right, midway] {avoidable bias} (axis cs:80,0.3878); \path[arrow] (axis cs:20,0.3545) edge node[left, midway] {variance} (axis cs:20,0.4454); \draw[decoration={text along path, text={human-level error}, text align={center}}, decorate] (axis cs:20,0.21) -- (axis cs:50,0.21); \addlegendentry{Validation} \addlegendentry{Training} \end{axis} \end{tikzpicture} \end{document}