Let's get into the detail!
1. Required packages and libraries
Plotting functions and data in LaTeX can be achieved by PGFplots package. Filling the area between two plots requires loading fillbetween library. The following code shows how one can load these element in LaTeX:
\documentclass[border=0.2cm]{standalone} % Required Package and Librarie \usepackage{pgfplots} \pgfplotsset{compat=newest} \usepgfplotslibrary{fillbetween} \begin{document} \begin{tikzpicture} % Illustration code \end{tikzpicture} \end{document}
2. Plot and save paths
Let's consider the case of plotting the following functions:
The following code draws these functions in the domain [0,4.5]:
\documentclass[border=0.2cm]{standalone} % Required Package and Librarie \usepackage{pgfplots} \pgfplotsset{compat=newest} \usepgfplotslibrary{fillbetween} \begin{document} \begin{tikzpicture} \begin{axis}[ axis lines = middle, xlabel = {$x$}, ylabel = {$y$}, xmin=0, xmax=5.5, ymin=0, ymax=24] % Plot 1 \addplot [name path = A, -latex, domain = 0:4.5, samples = 1000] {x^2} node [very near end, right] {$y=x^2$}; % Plot 2 \addplot [name path = B, -latex, domain = 0:4.5] {x} node [pos=1, above] {$y=x$}; \end{axis} \end{tikzpicture} \end{document}
which yields:
Comments:
- Functions are drawn using \addplot command.
- Each plot ends with an arrow Tip which is achieved by adding the option -latex to the \addplot command, Check TikZ arrows for more styles.
- Text labels are added to both plots using the \node command.
- The first plot is saved as A using the option name path=A with \addplot command. The second plot is saved as B using the option name path=B with \addplot command.
- For more details, I invite you to check this introduction to plotting functions and data in LaTeX.
3. Fill area between saved paths
To fill the area between these curves, we can use fill between command with of = A and B option. We also place a soft clip here, since we want to only fill between 2 and 4. Here is the extended LaTeX code:
\documentclass[border=0.2cm]{standalone} % Required Package and Librarie \usepackage{pgfplots} \pgfplotsset{compat=newest} \usepgfplotslibrary{fillbetween} \begin{document} \begin{tikzpicture} \begin{axis}[ axis lines = middle, xlabel = {$x$}, ylabel = {$y$}, xmin=0, xmax=5.5, ymin=0, ymax=24] % Plot 1 \addplot [name path = A, -latex, domain = 0:4.5, samples = 1000] {x^2} node [very near end, right] {$y=x^2$}; % Plot 2 \addplot [name path = B, -latex, domain = 0:4.5] {x} node [pos=1, above] {$y=x$}; % Fill area between paths \addplot [teal!30] fill between [of = A and B, soft clip={domain=2:4}]; \end{axis} \end{tikzpicture} \end{document}
which yields the following result:
4. Coordinates in axis environment
You may wonder how to get axis environment coordinates in order to use them with TikZ commands. For example, I would like to add a text node at (1,20) with respect to axis environment, How to do it?
Answer: this can be achieved using the coordinate syntax: (axis cs:{1,20}).
Final LaTeX code of filling area between the plot of the two functions:
\documentclass[border=0.2cm]{standalone} % Required Package and Librarie \usepackage{pgfplots} \pgfplotsset{compat=newest} \usepgfplotslibrary{fillbetween} \begin{document} \begin{tikzpicture} \begin{axis}[ axis lines = middle, xlabel = {$x$}, ylabel = {$y$}, xmin=0, xmax=5.5, ymin=0, ymax=24] % Plot 1 \addplot [name path = A, -latex, domain = 0:4.5, samples = 1000] {x^2} node [very near end, right] {$y=x^2$}; % Plot 2 \addplot [name path = B, -latex, domain = 0:4.5] {x} node [pos=1, above] {$y=x$}; % Fill area between paths \addplot [teal!30] fill between [of = A and B, soft clip={domain=2:4}]; % Dashed lines \draw [dashed, teal] (axis cs:{2,2}) -- (axis cs:{2,4}); \draw [dashed, teal] (axis cs:{4,4}) -- (axis cs:{4,16}); \draw [dashed] (axis cs:{2,0}) -- (axis cs:{2,2}); \draw [dashed] (axis cs:{4,0}) -- (axis cs:{4,4}); \end{axis} \end{tikzpicture} \end{document}
Compiling this code yields to the following TikZ illustration:
Mainly, we have added dashed lines with different colors (teal and black). These lines are drawn the above coordinate syntax.