Hallo Reinhard,
> Gleiches AspectRatio für alle ContourPlots macht die Sache für mich
nur noch schlimmer.
Nun habe ich es auch einmal verstanden. Besten Dank für Ihre Geduld.
Man könnte meinen, es mit
In[32]:=
Clear[g1, g2, g3];
g1 = ContourPlot[f[x,y,0], {x,-3,3},{y,0,2}, AspectRatio -> Automatic,
FrameLabel -> {"x in m","y in m"}];
g2 = ContourPlot[f[0,y,z], {y,0,2},{z,0,3}, AspectRatio -> Automatic,
FrameLabel -> {"y in m","z in m"}];
g3 = ContourPlot[f[x,0,z], {x,-3,3},{z,0,3}, AspectRatio -> Automatic,
FrameLabel -> {"x in m","z in m"}];
In[133]:=
Clear[x11, x12, x21, x22, x31, x32, y11, y12, y21, y22, y31, y32];
{{x31, x32}, {y31, y32}} = Most[(AbsoluteOptions[g3, PlotRange] /. Rule
-> List)[[1, 2]]];
{{x21, x22}, {y21, y22}} = Most[(AbsoluteOptions[g2, PlotRange] /. Rule
-> List)[[1, 2]]];
{{x11, x12}, {y11, y12}} = Most[(AbsoluteOptions[g1, PlotRange] /. Rule
-> List)[[1, 2]]];
Show[Graphics[{Rectangle[{x11, Abs[y21] + y22 + y32}, {x12, Abs[y11] +
Abs[y21] + y12 + y22 + y32}, g1],
Rectangle[{x21, y32}, {x22, Abs[y21] + y22 + y32}, g2],
Rectangle[{x31, y31}, {x32, y32}, g3]}, AspectRatio ->
Automatic]]
hinzubekommen. Das ist aber - wie bereits in der Gruppe (etwa vergang.
Jahr) im Zusammenhang mit GraphicsArray[] diskutiert - nicht der Fall,
und zwar wegen des Spruchs: "The rectangle is taken as the complete
display area in which the graphics object is rendered." aus der Hilfe
von Rectangle[]. Wenn man das Bildchen anschaut, sieht man, dass g2 wohl
in der Mitte anfängt - aber es fängt nicht der ContourPlot dort (bei x =
0.) an, sondern die linke Seite der y-Legende von g2. Auch die 0. von g3
ist aus demselben Grund nicht in der Mitte.
Deshalb könnte man in einem ersten Schritt auf die Legenden verzichten,
ebenso wie auf die FrameTicks, um symmetrische Objekte in der complete
display area zu erzeugen
In[124]:=
Clear[g4, g5, g6];
g4 = ContourPlot[f[x,y,0], {x,-3,3},{y,0,2}, AspectRatio -> Automatic,
FrameTicks -> None];
g5 = ContourPlot[f[0,y,z], {y,0,2},{z,0,3}, AspectRatio -> Automatic,
FrameTicks -> None];
g6 = ContourPlot[f[x,0,z], {x,-3,3},{z,0,3}, AspectRatio -> Automatic,
FrameTicks -> None];
diese dann zueinander koordinieren
In[138]:=
Clear[x41, x42, x51, x52, x61, x62, y41, y42, y51, y52, y61, y62];
{{x61, x62}, {y61, y62}} = Most[(AbsoluteOptions[g6, PlotRange] /. Rule
-> List)[[1, 2]]];
{{x51, x52}, {y51, y52}} = Most[(AbsoluteOptions[g5, PlotRange] /. Rule
-> List)[[1, 2]]];
{{x41, x42}, {y41, y42}} = Most[(AbsoluteOptions[g4, PlotRange] /. Rule
-> List)[[1, 2]]];
Show[Graphics[{Rectangle[{x41, Abs[y51] + y52 + y62}, {x42, Abs[y41] +
Abs[y51] + y42 + y52 + y62}, g4],
Rectangle[{x51, y62}, {x52, Abs[y51] + y52 + y62}, g5],
Rectangle[{x61, y61}, {x62, y62}, g6]}, AspectRatio ->
Automatic (*, Frame -> True, FrameLabel -> "aLabel", ... *)]]
nun verschieben keine Legenden, Zahlen und ähnlicher "Schnickschnack"
die Grafiken mehr in der "complete display area" und es passt.
Anschliessend, im Verfolg von AspectRatio, muss man die Ticks und Labels
alle selbst eintragen, dazu holt man sie mittels der AbsoluteOptions aus
den Einzelgraphiken, setzt sie richtig zusammen und liefert sie ab. Das
geht schon - aber macht dass Spass?
Gruss
Udo.
reinhard schlosser wrote:
danke für Deine Hinweise, aber ich will gar nicht "die gleiche Höhe
und Breite aller drei Bilder erreichen"
Gleiches AspectRatio für alle ContourPlots macht die Sache für mich
nur noch schlimmer.