如何使用颜色图填充绘图下的区域?

如何使用颜色图填充绘图下的区域?

我有一张图显示函数 f(x,y),就像 imshow 那样,还有一张图显示概率分布 P(f)。下面是该情况的图片。底部绘图的代码基本上是

\addplot[const plot,fill=black!20,very thin] file{hist.dat} \closedcycle;

为了增加两幅图像之间的视觉联系,我想在第二张图中使用第一张图的颜色图:直方图下方当前的灰色区域应该用 x 方向上的颜色图渐变填充。

fill=mapped color我尝试使用和不同绘图类型(如ycomb和)来实现这一点ybar interval,但似乎开箱即用,只有meshscatter支持色彩图,而两者都不适合我的场景。

以下是该情况的图像。

编辑:为了完整性,这是我的解决方案,源自已接受的答案。

\def\defcolormapshading#1#2{%
 \pgfplotscolormaptoshadingspec{#2}{50pt}\tempa%
 \def\tempb{\pgfdeclarehorizontalshading{#1}{\paperheight}}%
 \expandafter\tempb\expandafter{\tempa}%
 \let\tempa\undefined\let\tempb\undefined%
}%

把这个放在你的序言中。然后,在 tikzpicture 环境之前,说

\defcolormapshading{myshading}{mymap}

(用颜色图名称替换“mymap”,用阴影的描述性名称替换“myshading”)。然后将密钥提供shading=myshading\addplot。此代码片段中 like 的用法\pgfplotscolormaptoshadingspec在 pgfplots 手册中有详细说明。

答案1

您可以使用 定义适当的阴影,并使用它来填充您的图。阴影\pgfdeclarehorizontalshading位置处的颜色是最左侧可见的颜色,阴影位置处的颜色是最右侧可见的颜色。25bp75bp

\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{colormaps}

\begin{document}
\begin{tikzpicture}
\pgfdeclarehorizontalshading{stefan}{100bp}{
color(0bp)=(blue!50!black);
color(25bp)=(blue!50!black);
color(50bp)=(blue);
color(55bp)=(green);
color(60bp)=(yellow);
color(65bp)=(orange);
color(70bp)=(red);
color(75bp)=(red!50!black);
color(100bp)=(red!50!black)
}

\begin{axis}[enlargelimits=false,domain=-2.63:1.39,point meta=x]
\addplot [shading=stefan] coordinates {(-2.63,0.2) (-0.5,0.4) (-0.2,0.5) (-0.1,2.6) (0,0.8) (0.1,0.7) (0.2,0.8) (0.4,2.2) (0.5,0.4) (1.39,0.3)} \closedcycle;
\end{axis}
\end{tikzpicture}
\end{document}

相关内容