I would like to create a wavy arrow with a color gradient along the wave. For this, I tried to combine the solution from https://tex.stackexchange.com/a/197867/96546 for color gradients with the solution from https://tex.stackexchange.com/a/193451/96546 for wavy arrows.
Here is a MWE:
\documentclass[tikz, border=5]{standalone}
\usetikzlibrary{shapes.arrows}
\makeatletter
\def\createshadingfromlist#1#2#3{%
\pgfutil@tempcnta=0\relax
\pgfutil@for\pgf@tmp:={#3}\do{\advance\pgfutil@tempcnta by1}%
\ifnum\pgfutil@tempcnta=1\relax%
\edef\pgf@spec{color(0)=(#3);color(100)=(#3)}%
\else%
\pgfmathparse{50/(\pgfutil@tempcnta-1)}\let\pgf@step=\pgfmathresult%
%
\pgfutil@tempcntb=1\relax%
\pgfutil@for\pgf@tmp:={#3}\do{%
\ifnum\pgfutil@tempcntb=1\relax%
\edef\pgf@spec{color(0)=(\pgf@tmp);color(25)=(\pgf@tmp)}%
\else%
\ifnum\pgfutil@tempcntb<\pgfutil@tempcnta\relax%
\pgfmathparse{25+\pgf@step/4+(\pgfutil@tempcntb-1)*\pgf@step}%
\edef\pgf@spec{\pgf@spec;color(\pgfmathresult)=(\pgf@tmp)}%
\else%
\edef\pgf@spec{\pgf@spec;color(75)=(\pgf@tmp);color(100)=(\pgf@tmp)}%
\fi%
\fi%
\advance\pgfutil@tempcntb by1\relax%
}%
\fi%
\csname pgfdeclare#2shading\endcsname{#1}{100}\pgf@spec%
}
\createshadingfromlist{shading1}{vertical}{red,yellow,green,cyan,blue}
\createshadingfromlist{shading2}{vertical}{red,yellow}
\createshadingfromlist{shading3}{vertical}{black,blue,cyan,white}
%%%
\usetikzlibrary{decorations.shapes}
\usetikzlibrary{shapes.geometric, arrows}
\usetikzlibrary{patterns}
\usepackage[compat=1.0.0]{tikz-feynman}
\usetikzlibrary{decorations.pathreplacing,angles,quotes,decorations.pathmorphing}
\usepackage{tkz-euclide}
%\usetkzobj{all}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\begin{document}
\tikzset{decorate sep/.style 2 args=
{decorate,decoration={shape backgrounds,shape=circle,shape size=#1,shape sep=#2}}}
\begin{tikzpicture}[colorbar arrow/.style={
shape=double arrow,
double arrow head extend=0.125cm,
shape border rotate=90,
minimum height=5cm,
shading=#1
},
wavy/.style={decorate,decoration={snake,post length=1.2mm}}
]
\node [colorbar arrow=shading1,wavy] at (0,0) {};
% \node [colorbar arrow=shading2] at (1,0) {};
% \node [colorbar arrow=shading3] at (2,0) {};
\end{tikzpicture}
\end{document}
which creates the following figure:

So it almost works, but somehow the ends are not really arrows any more and the wave modifies both sides of the arrow boundary. What I would like to create is something like
with a color gradient across. This can be obtained in the above MWE by replacing the \node line with \draw[red,wavy,->,>=stealth'] (5.0,0.2) -- (2.2,0.2) node [above] {};
Any hints on what is going wrong in this combination or how to do it properly appreciated!

