Tag Info

Hot answers tagged

27

In order to colour each bar differently and make it appear with its own legend entry, each bar needs to be handled as its own plot, i.e. it needs its own \addplot ... command. Fortunately, you don't have to write \addplot ... seven times, but instead you can use \pgfplotsinvokeforeach {0,...,6} { \addplot ... }. I would suggest you provide the data in a ...


10

The approach for combining different y-axes when using groupplots is very similar to that when using just one plot: You draw the second set of plots on top of the first one, hiding the axis lines and axis labels, and moving the y(tick)labels to the other side: \documentclass{article} \usepackage{pgfplots,pgfplotstable} \usetikzlibrary{pgfplots.groupplots} ...


9

The groupplots library keeps the value of the current plot in the \pgfplots@group@current@plot count. So you can create the titles automatically using the alphalph package and the following style: \makeatletter \pgfplotsset{ auto title/.style={ title=(\AlphAlph{\pgfplots@group@current@plot}) } } \makeatother Then you just add auto title to ...


8

To place the pie charts, you can use \subcaptionbox (from the subcaption package); the code for the pie inclusion can be shortened with the help of a new command \putpie; using two minipages inside a \makebox you can place the legend at the desired location: \documentclass{article} \usepackage{pgfplots, pgfplotstable} \usepackage{subcaption} ...


7

You simply need to adjust the height of the color bar plot. This can easily be accomplished by doing: every colorbar/.append style={height=<height specification>} However, often you will use different heights for different groupplots. Therefore a more general approach would be: every colorbar/.append style={height= ...


6

Short answer: Paste the following code snippet into your preamble, and then define your overall labels using groupplot ylabel=<label> (they can be styled using every groupplot y label/.style): \makeatletter \pgfplotsset{ groupplot xlabel/.initial={}, every groupplot x label/.style={ at={($({\pgfplots@group@name\space ...


5

To plot spectrometer output in this format, which is apparently something of a standard, you can use a coordinate transform. If you set x coord trafo/.code={ \pgfmathparse{#1-0.5*(#1-2000)*(#1>2000)} } the x unit distance above 2000 is halved. To get correct tick labels, you also need to define the inverse transform: x coord inv trafo/.code={ ...


5

You could use two groupplots environments, where the height of the axes in the second is half that of the first. To align them properly I placed the first sub-plot of the second groupplot relative to the first groupplot, with \nextgroupplot[anchor=north west, at={($(left plots c1r1.north east) + (0.2cm,0)$)}] left plots is a label for the first ...


5

You can redefine the every axis y label style by increasing the xshift value as required. \documentclass{standalone} \usepackage{pgfplots} \usepgfplotslibrary{groupplots} \pgfplotsset{compat=1.6, ylabsh/.style={every axis y label/.style={at={(0,0.5)}, xshift=#1, rotate=90}}} \begin{document} \begin{tikzpicture} \begin{groupplot} ...


5

Based on the comment by @zeroth, I was able to put together a manually aligned set of plots. I'm pretty sure the code can be improved (particularly the placement of the figure caption) and I'm not at all sure what problems this might have (with, for instance, externalize), but this solves my problem. \documentclass{article} \usepackage{pgfplots} ...


4

(I used random numbers because I was too lazy to save your four data files.) Here a suggestion that gives Your first two requirements can be achieved by changing the title style. This actually appends the options you define to the node creating the title. Adding some negative yshift moves it closer to the axis, filling it adds the background color. You ...


4

You can pass the option /tikz/background rectangle/.style={draw=none} to groupplot (the prefix is required since those are TikZ keys): \documentclass{standalone} \usepackage{pgfplots} \usetikzlibrary{backgrounds,pgfplots.groupplots} \tikzset{ every picture/.style={ framed, background rectangle/.style={ draw=black!80, rounded corners=.5ex } ...


4

Disclaimer: This is not a complete answer as it only deals with plot width, label font sizes etc., but not with the node size and placement. It'd be too long as a comment unfortunately. I have found that it is possible to get proper font sizes when using groupplots by compensating for the horizontal spacing between plots. Your \includegraphics command is ...


4

Box plots are always placed at the coordinate specified with boxplot/draw position. This, in turn, defaults to 1+\plotnumofactualtype, but it can be customized to other values. In your case, you can simply place all your plots into one axis and assign an individual boxplot/draw position to each. Here is an approach which defines a math expression which ...


3

You don't have to use Tikz to add the labels, you can add them afterwards to the constructed box. \documentclass{standalone} \usepackage{graphicx} \usepackage{siunitx} \usepackage{tikz} \usepackage{pgfplots} \usepackage{array} \usepgfplotslibrary{groupplots} \pgfplotsset{compat=newest} \pgfplotsset{plot coordinates/math parser=false} \begin{document} ...


3

In my mind, groupplots aren't really intended for this kind of thing. I suggest using two axis environments instead. Place a \coordinate in the larger axis using the rel axis cs or axis cs coordinate system, and place the smaller axis at this coordinate. In the code below you'll see \coordinate (otheraxis) at (rel axis cs:0.15,0.5); in the first axis, ...


3

To add legend to a place to the right of the plots, one needs to add a legend style to the groupplot environment where at=() is the key. The (0,0) means the lower left of the corner while (1,1) means the upper right corner. Such system is called axis description cs documented on page 103. [legend style={at={(1.03,1.4)}, anchor=north west} Code: ...


3

Thanks to Jake's suggestion, a significant compression of my original solution is possible (since I don't know a thing about tikz). Also, a new version of stackengine should hit the streets this weekend. The syntax I used here will work in both old and new versions. You can control the inter-plot separation, if desired (i.e., normal hspacing will work ...


3

You can adjust the padding between the plots using the horizontal sep and vertical sep options in the group style. To adjust the style of the tick marks, use tick style=gray!50: \documentclass{article} \usepackage[demo]{graphicx} \usepackage{pgfplots} \usepgfplotslibrary{groupplots} \begin{document} \begin{tikzpicture} \pgfplotsset{% width=4cm, ...


3

Pgfplots has two parameters which control the selection of default ticks: max space between ticks try min ticks The first parameter is the primary parameter, it is used to derive the number of ticks. If this number is below try min ticks, pgfplots increases the number. Note that pgfplots only accepts specific tick locations, depending on the data range. ...


2

I don't know how your document could work with that strange preamble (\usetikzlibrary{pgfplots}?). Anyway, you have to set both tick pos and ticklabel pos to right, then there is no need to set the anchor. \documentclass{article} \usepackage{pgfplots} \usepgfplotslibrary{groupplots} \pgfplotsset{compat=1.6, /pgf/number format/.cd, 1000 ...


2

You can use the every plot/.style key to enter the common settings in that group \documentclass{article} \usepackage{pgfplots} \usepgfplotslibrary{groupplots} \begin{document} \begin{tikzpicture} \begin{groupplot}[group style={group size=2 by 2, every plot/.style={ xmin=-1, ...


2

This solution reads the data from a file. It let's you chose haw many plots there are in a row and how they should be scaled. But it will not break across pages, so at this number of plots you should use the [p] float placement specifier: Code \documentclass[parskip]{scrartcl} \usepackage[margin=15mm]{geometry} \usepackage{tikz} \usepackage{pgfplots} ...


2

Specifying domain does not set the xmin, xmax etc. for the plot. It simply sets the function evaluation domain and then afterwards the min/max limits are set from the data. Due to rounding errors you can expect to see the behaviour you have. In general: Anytime you use groupplots and sharing axis domains you should specify x/ymin AND x/ymax. So your ...


2

As ClaudioFiandrino suggested, without the keys remember picture and overlay the code works. Here's the (almost) MWE (probably some packages is useless or redundat). \documentclass{article} \usepackage[dvips]{graphicx} \usepackage[usenames,dvipsnames]{xcolor} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage{latexsym} ...


2

There is still something I'm not quite solving properly, though this gives the desired result. As I would have wanted it to work, you would use \startaddplot for your first plot and \nextaddplot for subsequent plots. But what happened is that the counter I used is somehow lagging in its step. So the crass fix I had to apply was initializing the counter to ...


2

You can set x=1cm, y=1cm instead of axis equal image to fix the alignment, if you're willing to hard code the dimensions. If you want to use a colorbar, you can reset the scaling by setting colorbar style={x=,y=}.


2

You have clip=false in the groupplot options, so this would happen. Make it clip=true. If you had any other paths (\draw, \node etc.) that went outside the axis limits, you could add clip mode=individual to enable clipping of plot lines but not other paths within the axis. That is not needed here however.


2

Based on Torbjørn T.'s comments and expanding it with the problem of using the newest pgfplot if you installed texlive from the Ubuntu repo: To use the latest pgfplots library you need to update pgf as well (and to use tlmgr, you'll probably need xzdec as well): sudo apt-get install xzdec tlmgr init-usertree tlmgr install pgfplots tlmgr install pgf After ...


1

For this case, as the best solution I have chosen manually placing the plots in tikzpicture environment. The source code is shown here and the output below. \begin{tikzpicture}[scale = 0.63] \foreach \r in {0,1,2,3,4,5,6} { \foreach \c in {0,1,2} { \draw ({\c*6.5+0.5},{26-(\r+1)*4+0.5}) -- ({(\c+1)*6.5-0.5},{26-(\r+1)*4+0.5}); % ...



Only top voted, non community-wiki answers of a minimum length are eligible