Pgfplots has builtin support for one axis which receives tick labels. If you want tick labels on both sides of an axis, you can either post a feature request at sourceforge and wait for its resolution or generate a second axis for the opposite site.
Here is a solution for the approach with a second axis:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat = 1.7}
\begin{document}
\begin{tikzpicture}
\pgfplotsset{
set layers,% --- CF
, x tick label style={
/pgf/number format/.cd,
fixed,
fixed zerofill,
precision=1,
/tikz/.cd
}
, y tick label style={
/pgf/number format/.cd,
fixed,
fixed zerofill,
precision=1,
/tikz/.cd
},
}
\begin{axis}[
% title = {$x \exp(-x^2-y^2)$}
, xlabel = $x$
, ylabel = $y$
, domain = -1:1
, y domain = -1:1
, enlargelimits
, view = {0}{90}
, extra description/.code={% --- CF
\xdef\XMIN{\pgfkeysvalueof{/pgfplots/xmin}}
\xdef\XMAX{\pgfkeysvalueof{/pgfplots/xmax}}
\xdef\YMIN{\pgfkeysvalueof{/pgfplots/ymin}}
\xdef\YMAX{\pgfkeysvalueof{/pgfplots/ymax}}
},
]
\addplot3[
contour gnuplot={
number = 10
},
thick
]
{
776.062 -50.812* x + 153.062 * y -76.812 *x *y
};
\end{axis}
\begin{axis}[% --- CF
xmin=\XMIN,
xmax=\XMAX,
ymin=\YMIN,
ymax=\YMAX,
ticklabel pos=right,
]
\end{axis}
\end{tikzpicture}
\end{document}
As you see, I extracted common options using a \pgfplotsset
and wrote two axis environments. In addition, I automatically remembered the axis limits of the first axis and replicated them in the second. Note that the set layers
statement synchronizes the layers of the two axes which is convenient especially if you plan to add grid lines. The solution currently draws the axis paths twice (except for the labels). That could be improved by means of axis lines
statements.
Concerning your question about "trimming": could you add more details on what you mean here?
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}
Best Answer
You can use the
xtick pos
,ytick pos
keys: