Edit and compile if you like:
% Author: Izaak Neutelings (May 2018)% Inspiration: https://tex.stackexchange.com/questions/113900/draw-polarized-light\documentclass[border=3pt,tikz]{standalone}\usepackage{amsmath} % for \text\usepackage{tikz}\usepackage{physics}\tikzset{>=latex} % for LaTeX arrow head\usepackage{xcolor}\colorlet{myblue}{black!40!blue}\colorlet{myred}{black!40!red}\colorlet{vcol}{green!50!black}\colorlet{Ecol}{orange!90!black}\colorlet{EVcol}{orange!80!black!60}\colorlet{Bcol}{violet!90}\begin{document}% Electromagnetic wave - colored\begin{tikzpicture}[x=(-15:0.9), y=(90:0.9), z=(-150:1.1),line cap=round, line join=round,axis/.style={black, thick,->},vector/.style={>=stealth,->}]\large\def\A{1.5}\def\nNodes{5} % use even number\def\nVectorsPerNode{8}\def\N{\nNodes*40}\def\xmax{\nNodes*pi/2*1.01}\pgfmathsetmacro\nVectors{(\nVectorsPerNode+1)*\nNodes}\def\vE{{\color{Ecol}\mathbf{E}}}\def\vB{{\color{Bcol}\mathbf{B}}}\def\drawENode{ % draw E node and vectors with some offset\draw[Ecol,very thick,variable=\t,domain=\iOffset*pi/2:(\iOffset+1)*pi/2*1.01,samples=40]plot (\t,{\A*sin(\t*360/pi)},0);\foreach \k [evaluate={\t=\k*pi/2/(\nVectorsPerNode+1);\angle=\k*90/(\nVectorsPerNode+1);}]in {1,...,\nVectorsPerNode}{\draw[vector,EVcol] (\iOffset*pi/2+\t,0,0) -- ++(0,{\A*sin(2*\angle+\iOffset*180)},0);
Click to download: electromagnetic_wave.tex • electromagnetic_wave.pdf
Open in Overleaf: electromagnetic_wave.tex