I have a set of 9 plots which should be combined into one plot. Each of these plots contains a ListContourPlot
, some circles, lines and an Inset
containing again a circle, some arrows and some text:
I already tried to use Levelscheme mentioned in this Question: https://stackoverflow.com/questions/5818888/how-to-make-a-grid-of-plots-with-a-single-pair-of-framelabels
In my first attempts with a dummy ContourPlot
function it worked pretty fine, but as I tried to use it with my plots it got totally confused:
I think the custom drawn lines/circles are the problem. I used pretty much the same code shown in the thread above:
Get["LevelScheme`"]
Figure[{Multipanel[{{0, 1}, {0, 1}}, {3, 3},
(*XFrameLabels->Text["x [mm]"],
YFrameLabels->Text["y [mm]"],*)
BufferB -> 3,
BufferL -> 3,
TickFontSize -> 18,
FontSize -> 18,
FontFamily -> "FrontPage",
XGapSizes -> 0,(*Abstände zwischen Plots*)
YGapSizes -> 0,
ExtendRange -> 0.05,(*erhöht Raum innerhalb des Frames*)
PanelLetterCorner -> {0.98, 1},
ShowTickLabelsExterior -> {True, True, False, False},
ShowPanelLetter -> False
],
FigurePanel[{1, 1}, PlotRange -> {{-range, range}, {-range, range}}],
RawGraphics[fullAngle[[1, 1]]],
FigurePanel[{1, 2}, PlotRange -> {{-range, range}, {-range, range}}],
RawGraphics[fullAngle[[1, 2]]],
FigurePanel[{1, 3}, PlotRange -> {{-range, range}, {-range, range}}],
RawGraphics[fullAngle[[1, 3]]],
FigurePanel[{2, 1},
PlotRange -> {{-range, range}, {-range, range}}, LabL -> Text["y [mm]"]],
RawGraphics[fullAngle[[2, 1]]],
FigurePanel[{2, 2}, PlotRange -> {{-range, range}, {-range, range}}],
RawGraphics[fullAngle[[2, 2]]],
FigurePanel[{2, 3}, PlotRange -> {{-range, range}, {-range, range}}],
RawGraphics[fullAngle[[2, 3]]],
FigurePanel[{3, 1}, PlotRange -> {{-range, range}, {-range, range}}],
RawGraphics[fullAngle[[3, 1]]],
FigurePanel[{3, 2},
PlotRange -> {{-range, range}, {-range, range}}, LabB -> Text["x [mm]"]],
RawGraphics[fullAngle[[3, 2]]],
FigurePanel[{3, 3}, PlotRange -> {{-range, range}, {-range, range}}],
RawGraphics[fullAngle[[3, 3]]]
},
PlotRange -> {{-0.08, 1.01}, {-0.15, 1.01}},
ImageSize -> 600
]
In a second attempt I found this thread: Do I have to code each case of this Grid full of plots separately?
Also the posted function in Jens' answer works mostly pretty well. The only point is, that it also gets confused by the Inset
-s in my graphs; the result looks like:
So my questions are:
Is it possible to use Levelscheme with my existing graphs, without modifying/redrawing them? Or is it possible to alter Jens' algorithm to make it fit to my insets?
Or: any other suggestion, that lets me create the desired set of graphs.
EDIT 1:
you can easily reproduce the graph with the following code:
AngleInset[\[Alpha]_] := Show[Graphics[{Thick, Circle[]}],
Graphics[{ { Black, Thick, Arrowheads[Large],
Arrow[{{0, 0}, {1.1, 0}}]}, {Black, Thick, Arrowheads[Large],
Arrow[{{0, 0}, {0, 1.1}}] }}],
Graphics[{Thick, Circle[{0, 0}, 0.5, {0, (-\[Alpha] Degree)}]}],
Graphics[{Red, Thick, Arrowheads[Large],
Arrow[{{0, 0}, {Cos[-\[Alpha] Degree], Sin[-\[Alpha] Degree]}}]}],
Graphics[
Style[Text[
ToString[-\[Alpha] ] <> "\[Degree]", {0, -0.5}, {0, 0} ], 24]],
Frame -> True,
FrameTicks -> False
];
ContourPlot[Sin[x]²+Cos[y]^2, {x, 0, 2 Pi}, {y,0,2Pi},
Epilog ->
Inset[AngleInset[90], {Right, Top}, {Right, Top}, 6,
Background -> White]]
GraphicsGrid
? $\endgroup$