Extend Axis Past Grid:
I am not sure if there is a pre defined way to have different limits on the grid, but you could certainly add a grid separately as desired.
For instance, with
\draw [gray, ultra thin]%
(axis cs: -8,-8) grid [step=10] (axis cs: 8,8);%
you get:
Code:
\documentclass[12pt,addpoints]{exam}
\usepackage{pgfplots}
\usetikzlibrary{backgrounds}
\pgfplotsset{every axis/.append style={
axis x line=middle,
axis y line=middle,
axis line style={<->},
xlabel={$x$},
ylabel={$y$},
line width=1pt,}}
% line style
\pgfplotsset{cmhplot/.style={color=black,mark=none,<->}}
% arrow style
\tikzset{>=stealth}
% framing the graph
\tikzset{tight background}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
%framed,
xmin=-10,xmax=10,
ymin=-10,ymax=10,
xtick={-8,-6,...,8},
xticklabels={,,,,,,,,},
ytick={-8,-6,...,8},
yticklabels={,,,,,,,,},
%grid=minor
]
\draw [gray, ultra thin]%
(axis cs: -8,-8) grid [step=10] (axis cs: 8,8);%
\addplot[cmhplot, blue, ultra thick]expression[domain=-8.5:8.5,samples=50]{x};
\end{axis}
\end{tikzpicture}
\end{document}
Extend Graph Past Grid:
To extend the graph beyond the grid you can limit the the min/max x and y values to be less than your graph and add the option clip=false
:
Code:
\documentclass[12pt,addpoints]{exam}
\usepackage{pgfplots}
\usetikzlibrary{backgrounds}
\pgfplotsset{every axis/.append style={
axis x line=middle,
axis y line=middle,
axis line style={<->},
xlabel={$x$},
ylabel={$y$},
line width=1pt,}}
% line style
\pgfplotsset{cmhplot/.style={color=black,mark=none,<->}}
% arrow style
\tikzset{>=stealth}
% framing the graph
\tikzset{tight background}
\begin{document}
\begin{tikzpicture}
\begin{axis}[framed,
clip=false,
xmin=-8,xmax=8,
ymin=-8,ymax=8,
xtick={-8,-6,...,8},
xticklabels={,,,,,,,,},
ytick={-8,-6,...,8},
yticklabels={,,,,,,,,},
grid=both,
]
\addplot[cmhplot, blue, ultra thick]expression[domain=-9.5:9.5,samples=50]{x};
\end{axis}
\end{tikzpicture}
\end{document}
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
I guess a very easy way would be to use a
scope
then clip using the circles, and then invert the clip using Jake'sreverseclip
style.Adding the
backgrounds
library, and then adding[on background layer]
to the scope will make sure that our fill won't cover the other lines.Output
Note: the magnification is not included in the code below, just to show the clipping up close.
Code