使用色彩图和 Tikz 填充曲线下的区域

使用色彩图和 Tikz 填充曲线下的区域

我想在这个图中使用像 hot2 这样的颜色图,其中红色出现在 x=0 处,绿色出现在 x=1 处,但我找不到任何方法可以做到这一点。

以下是我目前所掌握的信息:

    \begin{tikzpicture}
            \begin{axis}[
             axis lines=left,
             grid=major,
             no marks,
             xmin=0, xmax=1, xlabel=$E$,
             ymin=0, ymax=1, ylabel=$\lambda$, ylabel style={rotate=-90}
             ]
            \addplot+[smooth,blue,name path=A] {1 - (1 - x)^2}; % actual curve
            \addplot+[draw=none,name path=B] {0};     % “fictional” curve
            \addplot+[green] fill between[of=A and B,soft clip={domain=0:1}]; % filling
      \end{axis}
    \end{tikzpicture}

当前的

答案1

欢迎使用 TeX-SE!我们的示例通常以 开始\documentclass,以 结束\end{document},并且不会在代码中放入非标准字符,以防止他人复制。以下是 MWE 的示例。

\documentclass[tikz,border=3.14mm]{standalone} 
\usepackage{pgfplots} 
\pgfplotsset{compat=1.16} 
\newsavebox\backbox
\pgfplotscolormaptoshadingspec{hot}{7cm}\result
\def\tempb{\pgfdeclarehorizontalshading{tempshading}{7cm}}%
% where '\result' is inserted as last argument:
\expandafter\tempb\expandafter{\result}%
\sbox\backbox{\pgfuseshading{tempshading}}%
\begin{document} 
  \begin{tikzpicture}
            \begin{axis}[set layers,view={90}{0},
             axis lines=left,
             grid=major,
             no marks,
             xmin=0, xmax=1, xlabel=$E$,
             ymin=0, ymax=1, ylabel=$\lambda$, ylabel style={rotate=-90}
             ]
            \addplot+[smooth,blue] {1 - (1 - x)^2}; % actual curve
            \begin{pgfonlayer}{pre main}
            \clip plot[variable=\x,samples=25,domain=0:1] (\x,{1 - (1 - \x)^2})
            |-cycle;
            \node at (0.5,0.5){\usebox\backbox};
            \end{pgfonlayer}
         % filling
      \end{axis}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容