Chapter 13 – Plotting in 2D and 3D

[xyz-ips snippet=”intro”]

[xyz-ips snippet=”img1″]13/01[xyz-ips snippet=”img2″]

[xyz-ips snippet=”fig1″]Figure 13.1 – Plotting coordinates[xyz-ips snippet=”fig2″]

\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[grid]
    \addplot[only marks] coordinates
      { (-3,-2.4)  (-2,0.4) (-0.4,0.4)
        (0.4,-0.4) (2,-0.4) (3,2.4) };
  \end{axis}
\end{tikzpicture}
\end{document}

Plotting with classic TikZ

\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
  \draw[->] (-3,0) -- (3,0);
  \draw[->] (0,-3) -- (0,3);
  \foreach \i in {-3,-2,-1,1,2,3} {
    \node at (\i,-0.2) {\i};
    \node at (-0.2,\i) {\i};
  }
  \draw[domain=-3:3, samples=50, thick] plot (\x, \x^3/5 - \x);
\end{tikzpicture}
\end{document}

[xyz-ips snippet=”img1″]13/02[xyz-ips snippet=”img2″]

[xyz-ips snippet=”fig1″]Figure 13.2 – A cubic plot with a centered x-axis and y-axis[xyz-ips snippet=”fig2″]

\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[axis lines=center]
    \addplot[samples=80, smooth, thick, domain=-3:3]
      {x^3/5 - x};
  \end{axis}
\end{tikzpicture}
\end{document}

Defining a plot style

\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{every axis plot post/.append style =
  {samples=80, smooth, thick, black, mark=none} }
\begin{document}
\begin{tikzpicture}
  \begin{axis}[axis lines = center, domain = -3:3]
    \addplot {x^3/5 - x};
  \end{axis}
\end{tikzpicture}
\end{document}

[xyz-ips snippet=”img1″]13/03[xyz-ips snippet=”img2″]

[xyz-ips snippet=”fig1″]Figure 13.3 – Axes with minor ticks[xyz-ips snippet=”fig2″]

\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[axis lines=center, minor tick num=3]
    \addplot[samples=80, smooth, thick, domain=-3:3]
      {x^3/5 - x};
  \end{axis}
\end{tikzpicture}
\end{document}

[xyz-ips snippet=”img1″]13/04[xyz-ips snippet=”img2″]

[xyz-ips snippet=”fig1″]Figure 13.4 – Customized ticks[xyz-ips snippet=”fig2″]

\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{every axis plot post/.append style={thick,smooth,mark=none}}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[axis lines = middle, axis equal image,
    domain = -1.25:1.25, y domain = 0:1.25,
    ymax = 1.2,
    tick label style = {font=\scriptsize},
    xtick = {-1, -0.5, 0.5, 1},
    xticklabels = {-1, $-\frac{1}{2}$, $\frac{1}{2}$, 1},
    ytick = {0.25, 0.5, 0.75},
    yticklabels = {$\frac{1}{4}$, $\frac{1}{2}$,
    $\frac{3}{4}$} ]
  \addplot { (x^2-1)^2 };
\end{axis}
\end{tikzpicture}
\end{document}

[xyz-ips snippet=”img1″]13/05[xyz-ips snippet=”img2″]

[xyz-ips snippet=”fig1″]Figure 13.5 – Filling an area below a plot[xyz-ips snippet=”fig2″]

\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{every axis plot post/.append style =
  {samples=80, smooth, thick, black, mark=none} }
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines = center,
  axis equal image, domain = -1.5:1.5]
  \addplot[name path=quartic] {(x^2-1)^2};
  \path[name path=xaxis] (axis cs:-1.6,0)
    -- (axis cs:1.6,0);
  \addplot[darkgray, opacity=0.5]
    fill between[of=quartic and xaxis];
\end{axis}
\end{tikzpicture}
\end{document}

[xyz-ips snippet=”img1″]13/06[xyz-ips snippet=”img2″]

[xyz-ips snippet=”fig1″]Figure 13.6 – Filling a segment below a plot[xyz-ips snippet=”fig2″]

\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{every axis plot post/.append style =
  {samples=80, smooth, thick, black, mark=none} }
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines = center,
  axis equal image, domain = -1.5:1.5]
  \addplot[name path=quartic] {(x^2-1)^2};
  \path[name path=xaxis] (axis cs:-1.6,0)
    -- (axis cs:1.6,0);
  \addplot[darkgray, opacity=0.5]
    fill between[of=quartic and xaxis,
    soft clip = {domain=-0.5:0.5} ];
\end{axis}
\end{tikzpicture}
\end{document}

[xyz-ips snippet=”img1″]13/07[xyz-ips snippet=”img2″]

[xyz-ips snippet=”fig1″]Figure 13.7 – Filling an area between plots[xyz-ips snippet=”fig2″]

\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{every axis plot post/.append style =
  {samples=80, smooth, thick, black, mark=none} }
\begin{document}
\begin{tikzpicture}
  \begin{axis}[axis lines = center, axis equal,
      domain = -1.5:1]
    \addplot[name path=cubic]   {x^3/5 - x};
    \addplot[name path=quartic] {(x^2-1)^2};
    \addplot fill between[of=cubic and quartic, split,
      every segment/.style      = {transparent},
      every segment no 1/.style = {gray, opaque}];
  \end{axis}
\end{tikzpicture}
\end{document}

[xyz-ips snippet=”img1″]13/08[xyz-ips snippet=”img2″]

[xyz-ips snippet=”fig1″]Figure 13.8 – Intersection points of plots[xyz-ips snippet=”fig2″]

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{intersections}
\pgfplotsset{every axis plot post/.append style =
  {samples=80, smooth, thick, black, mark=none} }
\begin{document}
\begin{tikzpicture}
  \begin{axis}[axis lines = center, axis equal,
      domain = -1.5:1]
    \addplot[name path=cubic]   {x^3/5 - x};
    \addplot[name path=quartic] {(x^2-1)^2};
    \fill[name intersections = {of=cubic and quartic,
     name=p}]
      (p-1) circle (2pt) node [above right] {$p_1$}
      (p-2) circle (2pt) node [left]        {$p_2$};
\end{axis}
\end{tikzpicture}
\end{document}

[xyz-ips snippet=”img1″]13/09[xyz-ips snippet=”img2″]

[xyz-ips snippet=”fig1″]Figure 13.9 – Plots with a legend[xyz-ips snippet=”fig2″]

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{intersections}
\pgfplotsset{every axis plot post/.append style =
  {samples=80, smooth, thick, mark=none} }
\begin{document}
\begin{tikzpicture}
  \begin{axis}[axis lines = center, axis equal,
      domain = -1.5:1,
      legend entries = {$\frac{1}{5}x^3-x$, $(x^2-1)^2$}]
    \addplot[red,  name path=cubic] {x^3/5 - x};
    \addplot[blue, name path=quartic] {(x^2-1)^2};
    \fill[name intersections = {of=cubic and quartic,
     name=p}]
      (p-1) circle (2pt) node [above right] {$p_1$}
      (p-2) circle (2pt) node [left]        {$p_2$};
  \end{axis}
\end{tikzpicture}
\end{document}

[xyz-ips snippet=”img1″]13/10[xyz-ips snippet=”img2″]

[xyz-ips snippet=”fig1″]Figure 13.10 – A trigonometric function in a polar coordinate system[xyz-ips snippet=”fig2″]

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}
\begin{document}
\begin{tikzpicture}
\begin{polaraxis}
  \addplot[domain=0:180, samples=100, thick] {sin(3*x)};
\end{polaraxis}
\end{tikzpicture}
\end{document}

[xyz-ips snippet=”img1″]13/11[xyz-ips snippet=”img2″]

[xyz-ips snippet=”fig1″]Figure 13.11 – A trigonometric function over multiple times 360 degrees[xyz-ips snippet=”fig2″]

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}
\begin{document}
\begin{tikzpicture}
\begin{polaraxis}
  \addplot[domain=0:2880, samples=800, thick] {sin(9*x/8)};
\end{polaraxis}
\end{tikzpicture}
\end{document}

[xyz-ips snippet=”img1″]13/12[xyz-ips snippet=”img2″]

[xyz-ips snippet=”fig1″]Figure 13.12 – Archimedean Spiral[xyz-ips snippet=”fig2″]

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{trig format plots=rad}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[axis lines = middle, axis equal,
      domain = 0:6*pi, ymin=-18, ymax=18,
      xtick = {-4*pi,-2*pi,pi,3*pi,5*pi},
      ytick = {pi, 2*pi, 3*pi, 4*pi, 5*pi},
      xticklabels = {$-4\pi$, $-2\pi$,
        $\vphantom{1}\pi$, $3\pi$, $5\pi$},
      yticklabels = {$\vphantom{1}\pi$, $2\pi$,
        $3\pi$, $4\pi$, $5\pi$}
    ]
    \addplot[samples=120, smooth, thick, variable=t]
      ( {t*cos(t)}, {t*sin(t)} );
\end{axis}
\end{tikzpicture}
\end{document}

[xyz-ips snippet=”img1″]13/13[xyz-ips snippet=”img2″]

[xyz-ips snippet=”fig1″]Figure 13.13 – Archimedean Spiral in a polar coordinate system[xyz-ips snippet=”fig2″]

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepgfplotslibrary{polar}
\begin{document}
\begin{tikzpicture}
  \begin{polaraxis}[yticklabel=\empty]
    \addplot[domain=0:2880, samples=200, smooth, thick] {x};
  \end{polaraxis}
\end{tikzpicture}
\end{document}

With radian angles:

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepgfplotslibrary{polar}
\begin{document}
\begin{tikzpicture}
  \begin{polaraxis}[yticklabel=\empty]
    \addplot[domain=0:16*pi, samples=400, smooth, thick,
      data cs=polarrad] {x};
  \end{polaraxis}
\end{tikzpicture}
\end{document}

[xyz-ips snippet=”img1″]13/14[xyz-ips snippet=”img2″]

[xyz-ips snippet=”fig1″]Figure 13.14 – A plot in 3D coordinates[xyz-ips snippet=”fig2″]

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{colormaps}
\pgfplotsset{trig format plots=rad}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[
      domain    = -4:4, samples    = 70,
      y domain  = -4:4, samples y  = 70,
      colormap/blackwhite, grid]
    \addplot3[surf] { cos(sqrt(x^2+y^2)) };
  \end{axis}
\end{tikzpicture}
\end{document}

[xyz-ips snippet=”img1″]13/15[xyz-ips snippet=”img2″]

[xyz-ips snippet=”fig1″]Figure 13.15 – A sombrero plot[xyz-ips snippet=”fig2″]

\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{colormaps}
\begin{document}
  \begin{tikzpicture}
    \begin{axis}[hide axis, colormap/hot2]
      \addplot3 [surf, z buffer=sort, trig format plots=rad,
        samples=65, domain=-pi:pi, y domain=0:1.25,
        variable=t, variable y=r]
        ({r*sin(t)}, {r*cos(t)}, {(r^2-1)^2});
    \end{axis}
  \end{tikzpicture}
\end{document}

[xyz-ips snippet=”chapter1″]14[xyz-ips snippet=”chapter2″]

Here I found how this can be plotted with gnuplot: Mexican hat potential polar.svg from Spontaneous symmetry breaking (Sombrero potential) at Wikipedia.