Seite 1 von 1

Platzierung von Legenden mit pgfplots

Verfasst: So 20. Nov 2011, 10:19
von bene
Hi,

ich erstelle für meine Arbeit Diagramme über Matlab mit matlab2tikz. Dabei werden die Legenden mit folgendem Code platziert:
legend style={at={(0.03,0.97)},anchor=north west,nodes=right}
Die Legenden sind also relativ positioniert. Das gefällt mir nicht, da ich viele nicht quadratische Diagramme hab, und die Legenden dann immer unterschiedlich weit von den Rändern weg sind. Ich möchte die Legenden einfach immer 0.2cm vom Rand weg haben.

Ich hab hier ein Minimalbeispiel, wie ich es gern hätte. Allerdings funktioniert das bei mir nicht und ich versteh absolut nicht, warum.
Wenn ich nur eine der beiden Koordinaten zur Platzierung der Legende mit cm angeb, dann funktioniert es, wenn beide in cm sind, dann nicht.

\documentclass{report}

\usepackage{pgf}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{plot coordinates/math parser=false}

\newlength\figwidth
\newlength\figheight
\newlength\figtest
\setlength\figtest{.2cm}

\begin{document}

\setlength\figwidth{10cm}
\setlength\figheight{4cm}
\begin{tikzpicture}
\begin{axis}[%
scale only axis,
width=\figwidth,
height=\figheight,
xmin=0, xmax=7,
ymin=0, ymax=2.5,
legend entries={asdf,test},
legend style={at={(\figtest,\figheight)},anchor=north west,nodes=right}]
\addplot[]coordinates{(-1,-1)};
\addplot[]coordinates{(-1,-1)};
\end{axis}
\end{tikzpicture}

\end{document}

Verfasst: So 20. Nov 2011, 17:57
von feuersaenger
Hi bene,

wenn ich Deine Anforderung "0.2cm neben dem Rand" richtig verstehe, willst Du doch eine relative Positionierung, oder? Ich vermute, Du meinst "0.2cm neben dem rechten Rand, ausrichtung am oberen Rand"?

Falls mein Verstaendnis davon korrekt ist, kannst Du das mit
legend style={at={(1,1)},xshift=0.2cm,anchor=north west,nodes=right}
erreichen: Das "at={(1,1)}" sorgt dafuer, dass die Legend an x=100% , y=100% der Axengroesse ausgerichtet wird, und das "xshift=0.2cm" macht anschliessend einen (absoluten) shift drauf.

Zu dem aufgetretenen Problem: wenn Du absolute Groessen da rein schreibst, plaziert pgfplots das an den angegebenen absolut koordinaten. Nur... welche sind das? Die Achse wird ja ein paar mal hin-und hergeschoben. Gegenueber welchem Referenzpunkt ist (0.2cm,4cm) dann richtig? Wenn hier nur (0.2,4cm) steht, bedeuted das soviel wie x= 20% der Achsenbreite und 4cm absolute hoehe (gegen welchen 0-punkt auch immer).

Mit liebem Gruss

Christian

Verfasst: So 20. Nov 2011, 19:10
von bene
Ja, dein Verständnis war richtig, genau so soll es aussehen.

Das mit dem Referenzpunkt dachte ich mir natürlich auch. Ich hab da einfach ein bisschen rumprobiert und dachte dann eigentlich der Referenzpunkt wäre immer unten links im Diagramm, wie es bei den relativen Koordinaten von 0 bis 1 ja auch ist. Es hat mich dann eben gewundert, dass ich für eine Koordinate eine Größe in cm eingeben kann und das erwartete Ergebnis dabei rauskommt, aber nicht mehr, wenn beide Koordinaten in cm sind.

Aber mit dem Tipp, den du mir gegeben hast funktioniert es jetzt, Danke.

Verfasst: So 20. Nov 2011, 20:04
von feuersaenger
Hi Bene,

freut mich, dass es soweit klappt.

Deine Rueckfragen sind aber berechtigt: das ist in der Tat seltsam in der Nutzung. Tatsaechlich ist -bedingt durch einige trafos - die linke untere Ecke naemlich nicht unbedingt der Nullpunkt... was durchaus zuweilen Verwirrung stiftet (Sinn macht eine absolute Angabe vermutlich nur, wenn man einen benannten knoten angibt, d.h. at=(anothernode.north) oder so).

Mit liebem Gruss

Christian