DMUG-Archiv 2006

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: maßstäbliche ContourPlots

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.



Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html