A basic examples of the Fourier transform of a rectangular function.
For more Fourier analysis figures, please see the “fourier analysis” tag. These figures are used in Ben Kilminster’s lecture notes for PHY111.
Edit and compile if you like:
% Author: Izaak Neutelings (January 2021)
% http://pgfplots.net/tikz/examples/fourier-transform/
% https://tex.stackexchange.com/questions/127375/replicate-the-fourier-transform-time-frequency-domains-correspondence-illustrati
% https://www.dspguide.com/ch13/4.htm
\documentclass[border=3pt,tikz]{standalone}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{physics}
\usepackage[outline]{contour} % glow around text
\usepackage{xcolor}
\usetikzlibrary{intersections}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{angles,quotes} % for pic
\usetikzlibrary{calc}
\usetikzlibrary{3d}
\contourlength{1.3pt}
\tikzset{>=latex} % for LaTeX arrow head
\colorlet{myred}{red!85!black}
\colorlet{myblue}{blue!80!black}
\colorlet{mycyan}{cyan!80!black}
\colorlet{mygreen}{green!70!black}
\colorlet{myorange}{orange!90!black!80}
\colorlet{mypurple}{red!50!blue!90!black!80}
\colorlet{mydarkred}{myred!80!black}
\colorlet{mydarkblue}{myblue!80!black}
\tikzstyle{xline}=[myblue,thick]
\def\tick#1#2{\draw[thick] (#1) ++ (#2:0.1) --++ (#2-180:0.2)}
\tikzstyle{myarr}=[myblue!50,-{Latex[length=3,width=2]}]
\def\N{80}
\begin{document}
% RECTANGULAR FUNCTION
\def\xmin{-0.7*\T} % min x axis
\def\xmax{3.0} % max x axis
\def\ymin{-0.4} % min y axis
\def\ymax{1.7} % max y axis
\def\A{0.67*\ymax} % amplitude
\def\T{0.31*\xmax} % period
\begin{tikzpicture}
\message{^^JRectangular function}
\draw[->,thick] (0,\ymin) -- (0,\ymax) node[left] {$y$};
\draw[->,thick] (-\xmax,0) -- (\xmax+0.1,0) node[below=1,right=1] {$t$ [s]};
\draw[xline,very thick,line cap=round]
({-\T},{\A}) -- ({\T},{\A}) node[black,right=0,scale=0.9] {$A$}
({-\T},0) -- ({-0.9*\xmax},0)
({ \T},0) -- ({0.9*\xmax},0);
\draw[xline,dashed,thin,line cap=round]
({-\T},0) --++ (0,{\A})
({ \T},0) --++ (0,{\A});
\tick{{ -\T},0}{90} node[right=1,below=-1,scale=1] {$-T$};
\tick{{ \T},0}{90} node[right=1,below=-1,scale=1] {$T$};
%\tick{0,{ \A}}{ 0} node[left=-1,scale=0.9] {$A$};
\end{tikzpicture}
% RECTANGULAR FUNCTION - frequency domain
\begin{tikzpicture}
\message{^^JRectangular function - frequency domain}
\def\T{0.30*\xmax} % period
\def\A{0.70*\ymax} % amplitude
\draw[->,thick] (0,\ymin) -- (0,\ymax) node[left] {$g$};
\draw[->,thick] (-\xmax,0) -- (\xmax+0.1,0) node[below=1,right=1] {$\omega$ [rad/s]};
\draw[xline,samples=\N,smooth,variable=\t,domain=-0.94*\xmax:0.94*\xmax]
plot(\t,{\A*sin(360/(\T)*\t)/(2*pi)*(\T)/\t});
\tick{{-3*\T},0}{90} node[left= 5,below=-2,scale=0.85] {\strut$-\dfrac{3\pi}{T}$};
\tick{{-2*\T},0}{90} node[left= 5,below=-2,scale=0.85] {\strut$-\dfrac{2\pi}{T}$};
\tick{{ -\T},0}{90} node[left= 4,below= 0,scale=0.85] {\strut$-\dfrac{\pi}{T}$};
\tick{{ \T},0}{90} node[right= 0,below= 0,scale=0.85] {\strut$ \dfrac{\pi}{T}$};
\tick{{ 2*\T},0}{90} node[right=-1,below=-2,scale=0.85] {\strut$ \dfrac{2\pi}{T}$};
\tick{{ 3*\T},0}{90} node[right=-1,below=-2,scale=0.85] {\strut$ \dfrac{3\pi}{T}$};
\tick{0,{\A}}{0} node[left=-1,scale=0.8] {$2TA$};
\node[mydarkblue,right,scale=0.9] at (0.2*\xmax,\A)
{$2A\dfrac{\sin(T\omega)}{\omega}$}; %g(\omega) =
\end{tikzpicture}
%% SYNTHESIS 3D
%\begin{tikzpicture}[x=(-20:0.9), y=(90:0.9), z=(42:1.1)]
% \message{^^JSynthesis 3D}
% \def\xmax{6.5} % max x axis
% \def\ymin{-1.2} % min y axis
% \def\ymax{1.6} % max y axis
% \def\zmax{5.8} % max z axis
% \def\xf{1.17*\xmax} % x position frequency axis
% \def\A{(0.60*\ymax)} % amplitude
% \def\T{(0.335*\xmax)} % period
% \def\w{\zmax/11.2} % spacing components
%
% % COMPONENTS
% \foreach \i/\col [evaluate={\z=\w*\i;}] in {
% 11/mycyan,9/mypurple,7/myorange,5/myred,3/mygreen,1/myblue}{
% \draw[black!30] ({\T},0.1,\z) --++ (0,-0.2,0);
% \draw[black!30] ({2*\T},0.1,\z) --++ (0,-0.2,0);
% \draw[->,black!30] (0,0,\z) --++ (0.93*\xmax,0,0);
% \draw[xline,\col,opacity=0.8,thick,
% samples=\i*\N,smooth,variable=\t,domain=-0.05*\T:0.87*\xmax]
% plot(\t,{\f{\i}},\z);
% }
%
% % TIME DOMAIN
% \begin{scope}[shift={(0,0,-0.17*\zmax)}]
% \draw[black,fill=white,opacity=0.3,canvas is xy plane at z=0]
% (-0.1*\xmax,-1.25*\ymax) rectangle (1.13*\xmax,1.25*\ymax);
% \draw[->,thick] (-0.05*\xmax,0,0) -- (\xmax,0,0)
% node[below right=-3,canvas is xy plane at z=0] {$t$ [s]};
% \draw[->,thick] (0,\ymin,0) -- (0,\ymax,0)
% node[left,canvas is xy plane at z=0] {$y$};
% \draw[xline,blue!90!black,very thick,
% samples=9*\N,smooth,variable=\t,domain=-0.05*\T:0.9*\xmax]
% plot(\t,{\f{1}+\f{3}+\f{5}+\f{7}+\f{9}+\f{11}},0); %node[above] {$f$};
% \tick{{\T},0,0}{90}
% node[below=-1,scale=0.9,canvas is xy plane at z=0] {\contour{white}{$T$}};
% \tick{{2*\T},0,0}{90}
% node[below=-1,scale=0.9,canvas is xy plane at z=0] {\contour{white}{$2T$}};
% \node[scale=1,canvas is xy plane at z=0] at (0.4*\xmax,-\ymax,0) {Time domain};
% \end{scope}
%
% % FREQUENCY DOMAIN
% \begin{scope}[shift={(\xf,0,0)}]
% \draw[black,fill=white,opacity=0.3,canvas is zy plane at x=0]
% (-0.13*\zmax,-1.25*\ymax) rectangle (1.26*\zmax,1.25*\ymax);
% %\draw[->,thick] (0,0,0) -- (0,0,\zmax) node[above left=-1] {$z$};
% %\draw[->,thick] (\xmax,0,0) --++ (0,0,\zmax);
% \draw[->,thick] (0,0.8*\ymin,0) -- (0,\ymax,0)
% node[pos=1,left=0,canvas is zy plane at x=0] {$A_n$};
% %node[pos=0.84,left=2,fill=white,inner sep=0] {$A_n$};
% \draw[->,thick] (0,0,-0.05*\zmax) --++ (0,0,1.13*\zmax)
% node[below right=-1,canvas is zy plane at x=0] {$f$ $\left[\frac{1}{\mathrm{s}}\right]$};
% \node[scale=1,canvas is zy plane at x=0] at (0,-\ymax,0.65*\zmax) {Frequency domain};
% \draw[myblue!30,dashed,samples=3*\N,smooth,variable=\t,domain=0.074*\zmax:1.02*\zmax]
% plot(0,{\A*4/pi/\t*\w},\t); %node[right=2,above=0,scale=0.7] {$\dfrac{4A}{\pi n}$};
% \foreach \i/\col [evaluate={\z=\w*\i;}] in {
% 11/mycyan,9/mypurple,7/myorange,5/myred,3/mygreen,1/myblue}{
% \draw[\col,dash pattern=on 2 off 2]
% (0,0,\z) --++ (0,{\A*4/pi/\i},0);
% \fill[\col,canvas is zy plane at x=0]
% %(\xf,{\A*4/pi/\i},\z) circle(0.08);
% (\z,{\A*4/pi/\i}) circle(0.07);
% \tick{0,0,\z}{90}
% node[below=-1,scale=0.85,canvas is zy plane at x=0]
% {$\dfrac{\i}{T}$}; %f_\i=\ifnum\i=1 \else \i \fi T
% }
% \foreach \i [evaluate={\z=\w*\i;}] in {2,4,...,10}{
% \fill[myblue!60!black,canvas is zy plane at x=0] (\z,0) circle(0.07);
% }
% \end{scope}
%
%\end{tikzpicture}
\end{document}Click to download: fourier_transform.tex • fourier_transform.pdf
Open in Overleaf: fourier_transform.tex


This is a perfect example of how high-quality scientific visualization can transform abstract mathematics into something approachable. The combination of editable TikZ code and precise graphical representation encourages readers to experiment, not just observe. Resources like this make advanced mathematical concepts far more accessible