This happens because PGFPlots only uses one "stack" per axis: You're stacking the second confidence interval on top of the first. The easiest way to fix this is probably to use the approach described in "Is there an easy way of using line thickness as error indicator in a plot?": After plotting the first confidence interval, stack the upper bound on top again, using stack dir=minus
. That way, the stack will be reset to zero, and you can draw the second confidence interval in the same fashion as the first:
\documentclass{standalone}
\usepackage{pgfplots, tikz}
\usepackage{pgfplotstable}
\pgfplotstableread{
temps y_h y_h__inf y_h__sup y_f y_f__inf y_f__sup
1 0.237340 0.135170 0.339511 0.237653 0.135482 0.339823
2 0.561320 0.422007 0.700633 0.165871 0.026558 0.305184
3 0.694760 0.534205 0.855314 0.074856 -0.085698 0.235411
4 0.728306 0.560179 0.896432 0.003361 -0.164765 0.171487
5 0.711710 0.544944 0.878477 -0.044582 -0.211349 0.122184
6 0.671241 0.511191 0.831291 -0.073347 -0.233397 0.086703
7 0.621177 0.471219 0.771135 -0.088418 -0.238376 0.061540
8 0.569354 0.431826 0.706882 -0.094382 -0.231910 0.043146
9 0.519973 0.396571 0.643376 -0.094619 -0.218022 0.028783
10 0.475121 0.366990 0.583251 -0.091467 -0.199598 0.016664
}{\table}
\begin{document}
\begin{tikzpicture}
\begin{axis}
% y_h confidence interval
\addplot [stack plots=y, fill=none, draw=none, forget plot] table [x=temps, y=y_h__inf] {\table} \closedcycle;
\addplot [stack plots=y, fill=gray!50, opacity=0.4, draw opacity=0, area legend] table [x=temps, y expr=\thisrow{y_h__sup}-\thisrow{y_h__inf}] {\table} \closedcycle;
% subtract the upper bound so our stack is back at zero
\addplot [stack plots=y, stack dir=minus, forget plot, draw=none] table [x=temps, y=y_h__sup] {\table};
% y_f confidence interval
\addplot [stack plots=y, fill=none, draw=none, forget plot] table [x=temps, y=y_f__inf] {\table} \closedcycle;
\addplot [stack plots=y, fill=gray!50, opacity=0.4, draw opacity=0, area legend] table [x=temps, y expr=\thisrow{y_f__sup}-\thisrow{y_f__inf}] {\table} \closedcycle;
% the line plots (y_h and y_f)
\addplot [stack plots=false, very thick,smooth,blue] table [x=temps, y=y_h] {\table};
\addplot [stack plots=false, very thick,smooth,blue] table [x=temps, y=y_f] {\table};
\end{axis}
\end{tikzpicture}
\end{document}
The OPs code gives the expected result (from the point of view from PGFPlots), but I think "the user" expects that "the last shown color" in the colorbar
should be the last defined color in the colormap
.
With OPs code that "last color" is indeed used in the colorbar
, but only at 1 (and above), so it is invisible. Luckily with PGFPlots v1.14 there where introduced many new features regarding colormap
s and colorbar
s so it is now very easy to create the colorbar "the user expects".
For more details please have a look at the comments in the code.
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{
colormap={parula}{
rgb255=(53,42,135)
rgb255=(15,92,221)
rgb255=(18,125,216)
rgb255=(7,156,207)
rgb255=(21,177,180)
rgb255=(89,189,140)
rgb255=(165,190,107)
rgb255=(225,185,82)
rgb255=(252,206,46)
rgb255=(249,251,14)
},
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
% use the following key--value to get the desired result
colormap access=piecewise const,
% (just to save (vertical) space in the answer)
colorbar horizontal,
% % -----
% % (please note that also the following key isn't needed any more
% % in this solution. But then it could be that your PDF viewer
% % returns a strange result. For example in SumatraPDF this most
% % probably is a bug that is reported already
% % <https://github.com/sumatrapdfreader/sumatrapdf/issues/595>)
% colorbar sampled,
% % also this key isn't needed when using
% % `colormap access=piecewise constant' and the number of "samples"
% % equals the number of given colors in the colormap
% colorbar style={
% samples=11,
% },
% % -----
% % if you need more or less colors than the colormap provides than
% % you can use the new keys provided
% % (see "Building Colormaps ased on other Colormaps" in
% % section 4.7.6 of the PGFPlots manual (v1.14) on page 198ff)
% colormap={my sampled version of viridis}{
% samples of colormap=(10 of viridis)
% },
% % -----
point meta min=0,
point meta max=1,
]
\end{axis}
\end{tikzpicture}
\end{document}
Best Answer
The colormap 'viridis' is an addon to the latest version of pgfplots. After updating my Latex packages it worked for me.