我想在这个图中使用像 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}