summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/pgfplots/pgfplots.libs.groupplot.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex/pgfplots/pgfplots.libs.groupplot.tex')
-rw-r--r--Master/texmf-dist/doc/latex/pgfplots/pgfplots.libs.groupplot.tex235
1 files changed, 235 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/pgfplots/pgfplots.libs.groupplot.tex b/Master/texmf-dist/doc/latex/pgfplots/pgfplots.libs.groupplot.tex
new file mode 100644
index 00000000000..056f80c7334
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pgfplots/pgfplots.libs.groupplot.tex
@@ -0,0 +1,235 @@
+\subsection{Grouping plots}
+\label{sec:group:plot}
+
+{\noindent {\emph{by Nick Papior Andersen}}}
+
+\index{Group library!Subplots}%
+
+
+\begin{pgfplotslibrary}{groupplots}
+ A library which allows the user to typeset several plots in a matrix like structure.
+ Often one has to compare two plots to one another, or you simply need to display two plots in conjunction with each other. Either way the following
+ section describes this library which makes this typesetting easy.
+\end{pgfplotslibrary}
+
+\begin{environment}{{groupplot}\oarg{options}}
+ Once you have loaded the |groupplots| library you will gain access to this environment. This environment is limited to the same restrictions as the
+ |axis| environment. It actually utilizes this environment so consider it as an extension of this. What is important to note is that \oarg{options} gets
+ applied to all plots in the entire environment. This can be really handy when you need the same |xmin|, |xmax|, |ymin| and |ymax|.
+\end{environment}
+
+With such an environment one can typeset plots in matrix like styles
+% \usepgfplotslibrary{groupplots}
+\begin{codeexample}[]
+% Example using groupplots library
+\begin{tikzpicture}
+ \begin{groupplot}[group style={group size=2 by 2},height=3cm,width=3cm]
+ \nextgroupplot
+ \addplot coordinates {(0,0) (1,1) (2,2)};
+ \nextgroupplot
+ \addplot coordinates {(0,2) (1,1) (2,0)};
+ \nextgroupplot
+ \addplot coordinates {(0,2) (1,1) (2,1)};
+ \nextgroupplot
+ \addplot coordinates {(0,2) (1,1) (1,0)};
+ \end{groupplot}
+\end{tikzpicture}
+% Same example created as done without the library
+\begin{tikzpicture}
+ \begin{axis}[name=plot1,height=3cm,width=3cm]
+ \addplot coordinates {(0,0) (1,1) (2,2)};
+ \end{axis}
+ \begin{axis}[name=plot2,at={($(plot1.east)+(1cm,0)$)},anchor=west,height=3cm,width=3cm]
+ \addplot coordinates {(0,2) (1,1) (2,0)};
+ \end{axis}
+ \begin{axis}[name=plot3,at={($(plot1.south)-(0,1cm)$)},anchor=north,height=3cm,width=3cm]
+ \addplot coordinates {(0,2) (1,1) (2,1)};
+ \end{axis}
+ \begin{axis}[name=plot4,at={($(plot2.south)-(0,1cm)$)},anchor=north,height=3cm,width=3cm]
+ \addplot coordinates {(0,2) (1,1) (1,0)};
+ \end{axis}
+\end{tikzpicture}
+\end{codeexample}
+
+The equivalent code is seen as the second example and it is clear that you have to type a lot less. So how do you use it?
+First of all you need to utilize the new environment |groupplot|. Within this environment the following command works.
+\begin{command}{\nextgroupplot\oarg{options} \meta{normal plot commands}}
+\label{cmd:pgfplots:nextgroupplot}
+This command shifts the placement of the plot. Therefore one should always start the environment |groupplot| with the command
+\textbackslash|nextgroupplot| in order to create the first plot. The \oarg{options} are the options that are supplied to the following plot commands until
+the next \textbackslash|nextgroupplot| command is seen by \TeX.
+The order in which figures are typeset are as seen in the next example.
+% \usepgfplotslibrary{groupplots}
+\begin{codeexample}[]
+\begin{tikzpicture}[shorten >=4pt,shorten <=4pt]
+ \begin{groupplot}[group style={group size=2 by 2},
+ height=3.5cm,width=3.5cm,/tikz/font=\small]
+ \nextgroupplot%1
+ \addplot coordinates {(0,1) (1,0)};
+ \nextgroupplot%2
+ \addplot coordinates {(0,1) (1,0)};
+ \nextgroupplot%3
+ \addplot coordinates {(0,1) (1,0)};
+ \nextgroupplot%4
+ \addplot coordinates {(0,1) (1,0)};
+ \end{groupplot}
+ \draw[thick,>=latex,->,red]
+ (group c1r1.center) node {1.} --
+ (group c2r1.center) node {2.};
+ \draw[thick,>=latex,->,red]
+ (group c2r1.center) --
+ (group c1r2.center) node {3.};
+ \draw[thick,>=latex,->,red]
+ (group c1r2.center) --
+ (group c2r2.center) node {4.};
+\end{tikzpicture}
+\end{codeexample}
+The plot first fills the first row, then the next row and so on. Just like a table, thus the names |group c|\meta{column}|r|\meta{row}. The power of the |groupplot| is
+to quickly create an aligned structure of plots. But you can also utilize it to structure data more creatively. Consider the next example.
+% \usepgfplotslibrary{groupplots}
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \begin{groupplot}[group style={group size=2 by 2,
+ horizontal sep=0pt,vertical sep=0pt,
+ xticklabels at=edge bottom},
+ xmin=0,ymin=0,
+ height=3.7cm,width=4cm,no markers]
+ \nextgroupplot[group/empty plot]
+ \nextgroupplot[xmin=5,xmax=10,ymin=50,ymax=100]
+ \addplot[very thick] file {plotdata/group-1.dat};
+ \nextgroupplot[xmax=5,ymax=50]
+ \addplot[very thick] file {plotdata/group-1.dat};
+ \nextgroupplot[xmin=5,xmax=10,ymax=50,yticklabels={}]
+ \addplot[very thick] file {plotdata/group-1.dat};
+ \end{groupplot}
+\end{tikzpicture}
+\end{codeexample}
+
+Or for instance zooming in on data as in the next example.
+% \usepgfplotslibrary{groupplots}
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \begin{groupplot}[group style={group size=3 by 1},xmin=0,ymin=0,height=4cm,width=5cm,no markers]
+ \nextgroupplot
+ \addplot[very thick] file {plotdata/group-1.dat};
+ \draw[red,dashed,thick] (axis cs:0,0) rectangle (axis cs:5,30);
+ \nextgroupplot[xmax=5,ymax=30]
+ \addplot[very thick] file {plotdata/group-1.dat};
+ \draw[red,dashed,thick] (axis cs:3,10) rectangle (axis cs:5,25);
+ \nextgroupplot[xmin=3,xmax=5,ymin=10,ymax=25]
+ \addplot[very thick] file {plotdata/group-1.dat};
+ \end{groupplot}
+ \draw[thick,blue,->,shorten >=2pt,shorten <=2pt]
+ (group c1r1.east) -- (group c2r1.west);
+ \draw[thick,blue,->,shorten >=2pt,shorten <=2pt]
+ (group c2r1.east) -- (group c3r1.west);
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+
+\subsubsection{Grouping options}
+\label{sec:pgfplots:group:options}
+
+Here the various available options of the library resides.
+
+\begin{pgfplotskey}{group style=group/.cd,\marg{options}}
+ This key allows one to faster reach the group options. Some of the options are very similar to the normal commands so they are supplied in another
+ subdirectory |group|. So the following are equivalent.
+\begin{codeexample}[code only]
+\pgfplotsset{group style={a=2,b=3}}
+\pgfplotsset{group/a=2,group/b=3}
+\pgfplotsset{group/.cd,a=2,b=3}
+\end{codeexample}
+It can thus decrease the size of your options with out destroying the clearness of where options belong.
+\end{pgfplotskey}
+All the following keys are in the subdirectory |group|.
+
+\begin{pgfplotskeylist}{group/group size=\meta{columns} by \meta{rows} (initially 1 by 1),
+ group/columns=\meta{columns} (initially 1),
+ group/rows=\meta{rows} (initially 1)}
+ These keys determines the total number of plots that can be in one environment |groupplot|. It is thus important not to add more
+ \textbackslash|nextgroupplot| in the environment than \meta{columns}$\times$\meta{rows}. This is critical to set if one uses more than 1 more plot. As
+ the key |group size| uses |columns| and |rows| you should stick to either |group size| or both |columns| and |rows|.
+\end{pgfplotskeylist}
+
+\begin{pgfplotskeylist}{group/horizontal sep=\meta{dimension} (initially 1cm),
+ group/vertical sep=\meta{dimension} (initially 1cm)}
+ The spacing between the plots in the horizontal and vertical direction, respectively. If you thus want them to be \textit{glued} together you should set
+ them both to a length of |0pt|.
+\end{pgfplotskeylist}
+
+\begin{pgfplotskey}{group/every plot/.style=\marg{style} (initially empty)}
+ This style is used on every plot as the first style. It is thus equivalent as \meta{options} in the |groupplot| environment.
+\end{pgfplotskey}
+
+\begin{pgfplotskeylist}{group/xticklabels at=\mchoice{all,edge top,edge bottom} (initially all),%
+ group/yticklabels at=\mchoice{all,edge left,edge right} (initially all)}
+ In order to determine which plots get tick labels typeset one can use these keys. By default all axis gets typeset normally and thus have both $x$ and
+ $y$ axis tick labels. If one sets
+
+\begin{codeexample}[code only]
+\pgfplotsset{group/xticklabels at=edge bottom,group/yticklabels at=edge right}
+\end{codeexample}
+only the bottom row gets tick labels on the $x$ axis and only the last column gets tick labels on the $y$ axis on their right side. These keys are
+specially handy when using \textit{glued} plots.
+\end{pgfplotskeylist}
+
+\begin{pgfplotskey}{group/group name=\marg{name} (initially group)}
+ This sets what you can refer the plots to after typesetting. Thus you can use their anchors later. See the following example
+% \usepgfplotslibrary{groupplots}
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \begin{groupplot}[group style={
+ group name=my plots,group size=2 by 2},
+ width=4cm,height=4cm]
+ \nextgroupplot
+ \addplot coordinates{(0,0) (1,2) (2,1)};
+ \nextgroupplot
+ \addplot coordinates{(0,0) (1,2) (2,1)};
+ \nextgroupplot
+ \addplot coordinates{(0,0) (1,2) (2,1)};
+ \nextgroupplot
+ \addplot coordinates{(0,0) (1,2) (2,1)};
+ \end{groupplot}
+ \draw (my plots c1r1.east)
+ circle (3pt) node {East};
+ \draw (my plots c2r1.north)
+ circle (3pt) node {north};
+ \draw (my plots c1r2.center)
+ circle (3pt) node {center};
+ \draw (my plots c2r2.north west)
+ circle (3pt) node {North west};
+\end{tikzpicture}
+\end{codeexample}
+\end{pgfplotskey}
+
+\begin{pgfplotskey}{group/empty plot/.style=\marg{style} (initially /pgfplots/hide axis)}
+ This key can be used as an option to the command \textbackslash|nextgroupplot|. This makes the next plot invisible (only the axes) but maintains it anchors and
+ name. If you want it to behave in another style then you can redefine it. Consider the same example as before.
+% \usepgfplotslibrary{groupplots}
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \begin{groupplot}[group style={
+ group name=my plots,group size=2 by 2},
+ width=4cm,height=4cm]
+ \nextgroupplot[group/empty plot]
+ \nextgroupplot
+ \addplot coordinates{(0,0) (1,2) (2,1)};
+ \nextgroupplot
+ \addplot coordinates{(0,0) (1,2) (2,1)};
+ \nextgroupplot
+ \addplot coordinates{(0,0) (1,2) (2,1)};
+ \end{groupplot}
+ \draw (my plots c1r1.east)
+ circle (3pt) node {East};
+ \draw (my plots c2r1.north)
+ circle (3pt) node {north};
+ \draw (my plots c1r2.center)
+ circle (3pt) node {center};
+ \draw (my plots c2r2.north west)
+ circle (3pt) node {North west};
+\end{tikzpicture}
+\end{codeexample}
+Notice that you need to call a \textbackslash|nextgroupplot| again after to jump to the next plot.
+\end{pgfplotskey}