I don't know whether it is possible to create a custom node shape that has a fading on one or both sides. So, I think, it may be better to use pics for this:
\documentclass[tikz]{standalone}
\usetikzlibrary{calc,fadings}
\def\solutelength{1}
\def\soluteheight{.5}
\def\solutevariabilityhigh{0}
\def\solutevariabilitylow{0}
\def\solutelabelcolor{black}
\tikzset{
pics/solute/.default={s-s},
pics/solute/.style args={#1-#2}{
code={
\def\hasfading{f}
\def\stylehigh{#2}
\def\stylelow{#1}
\coordinate (-north) at ({.5\solutelength},\soluteheight);
\coordinate (-south) at ({.5\solutelength},0);
\coordinate (-south west) at (0,0);
\coordinate (-south east) at (\solutelength,0);
\coordinate (-north west) at (0,\soluteheight);
\coordinate (-north east) at (\solutelength,\soluteheight);
\coordinate (-south west reduced) at ({0+\solutevariabilitylow},0);
\coordinate (-south east reduced) at ({\solutelength-\solutevariabilityhigh},0);
\coordinate (-north west reduced) at ({0+\solutevariabilitylow},\soluteheight);
\coordinate (-north east reduced) at ({\solutelength-\solutevariabilityhigh},\soluteheight);
\ifx\stylelow\hasfading
\fill (-south west reduced) -- (-south) -- (-north) -- (-north west reduced) -- cycle;
\fill[left color=.!0, right color=.] (-south west) -- (-south west reduced) -- (-north west reduced) -- (-north west) -- cycle;
\else
\fill (-south west reduced) -- (-south) -- (-north) -- (-north west) -- cycle;
\fi
\ifx\stylehigh\hasfading
\fill (-south) -- (-south east reduced) -- (-north east reduced) -- (-north) -- cycle;
\fill[left color=., right color=.!0] (-south east reduced) -- (-south east) -- (-north east) -- (-north east reduced) -- cycle;
\else
\fill (-south) -- (-south east reduced) -- (-north east) -- (-north) -- cycle;
\fi
\node[text=\solutelabelcolor] (-label) at ($(-south west) !0.5! (-north east)$) {\tikzpictext\strut};
},
},
solute/length/.code={
\def\solutelength{#1}
},
solute/height/.code={
\def\soluteheight{#1}
},
solute/variability high/.code={
\def\solutevariabilityhigh{#1}
},
solute/variability low/.code={
\def\solutevariabilitylow{#1}
},
solute/label color/.code={
\def\solutelabelcolor{#1}
},
solute/label/.style={
pic text={#1}
},
}
\begin{document}
\begin{tikzpicture}
\draw[-stealth, thick] (0,0) -- (11,0);
\foreach \x in {0,...,10} {
\draw (\x,.1) -- ++(0,-.2);
}
\draw (0,.2) pic[yellow, solute/length=2, solute/label={solute a}] {solute};
\draw (1,.7) pic[orange, solute/length=4, solute/variability high=1, solute/label={solute b}] {solute};
\draw (3,1.2) pic[cyan, solute/length=6, solute/variability low=2, solute/variability high=2, solute/label={solute c}] {solute};
\draw (6,.7) pic[orange, solute/length=4, solute/variability low=1, solute/label={solute d}] {solute={f-s}};
\draw (1,-.7) pic[green, solute/length=4, solute/variability high=1, solute/label={solute e}] {solute={f-f}};
\draw (3,-1.2) pic[red, solute/length=4, solute/variability high=2, solute/variability low=1, solute/label={solute f}] {solute={s-f}};
\draw (4,-1.7) pic[blue, solute/label color=white, solute/length=7, solute/variability high=1, solute/variability low=2, solute/label={solute g}] {solute={f-f}};
\end{tikzpicture}
\end{document}

- The most basic command is
\draw (0,0) pic {solute};.
- You can add options to the pic such as a color that will for example affect the filling. Additionally, there are some special options:
- The length of the block can be defined by
solute/length. The height of the block can be defined by solute/height.
- By using
pic {solute={x-x}}, you can define the style of the right or left edge of the block, where x can be either s or f and s stands for slope while f stands for fading.
- The length of the slope or the fading can be defined by
solute/variability high and solute/variability low. If these values are zero (or not given), there will be no slope and no fading.
- You can change the color of the label by defining
solute/label color.