I am making a bunch of two dimensional plots and I would like to have them arranged in a grid with no space in between them. That is, I want their frames touching each other.
My problem is twofold. First I don't know how to get the plots to have a consistent size. When I try to give the plots the same size via ImageSize
, it applies the size to the overall image, including the tick marks and labels. But when I have two different plots, one with tick labels and one without, giving the same value to ImageSize
doesn't give the result I'm looking for.
Secondly, I want to get rid of any white space around the images such that when I give Grid
the option Spacings ->{0,0}
there really is no visible space between the plots.
In the example code I use the CustomTicks
package.
(*an example of what I might plot, simple sum of two dimensional \
Lorentzians*)
lzn[x_, w_, g_] := (x - w + I g)^-1;
exampledata2D =
Table[Re[lzn[w1, .2, .1] lzn[w2, .3, .2] +
lzn[w1, .4, .1] lzn[w2, .8, .1] +
lzn[w1, .8, .2] lzn[w2, .4, .2]], {w1, 0, 1, .01}, {w2, 0,
1, .01}];
<< "CustomTicks`";
standardticks = LinTicks[0, 1, .2, 4];
(*I don't want the last tick label for one plot overlapping with the \
first tick label of the plot right next to it.*)
ticks2 = LinTicks[0, 1, .2, 4, ShowLast -> False];
(*Custom plotting function so I don't have to reprint the same \
options over and over *)
plottingfunction[list_, plotopts : OptionsPattern[]] :=
ListContourPlot[list,
Evaluate[FilterRules[{plotopts}, Options[ListContourPlot]]],
Contours -> 30, PlotRange -> All, DataRange -> {{0, 1}, {0, 1}},
BaseStyle -> 18,
ColorFunction -> (Blend[{Red, Orange, Yellow, Green, Blue,
Darker[Blue]}, #] &)];
bottomleft =
plottingfunction[exampledata2D,
FrameTicks -> {{ticks2, StripTickLabels[standardticks]}, {ticks2,
StripTickLabels[standardticks]}}];
bottomright =
plottingfunction[exampledata2D,
FrameTicks -> {{StripTickLabels[standardticks],
StripTickLabels[standardticks]}, {standardticks,
StripTickLabels[standardticks]}}];
topleft =
plottingfunction[exampledata2D,
FrameTicks -> {{ticks2,
StripTickLabels[standardticks]}, {StripTickLabels[
standardticks], StripTickLabels[standardticks]}}];
topright =
plottingfunction[exampledata2D,
FrameTicks -> {{StripTickLabels[standardticks],
StripTickLabels[standardticks]}, {StripTickLabels[
standardticks], StripTickLabels[standardticks]}}];
Grid[{{topleft, topright}, {bottomleft, bottomright}},
BaseStyle -> ImageSizeMultipliers -> 1, Spacings -> {0, 0}]
ImageSize
, fixAspectRation
, focus onFrameTicks
, useImagePadding
for plot andSpacing
forGrid
. $\endgroup$