pgfplot: Überlappende y tick labels positionieren

Tabellen und Grafiken erstellen und anordnen


Orikson
Forum-Anfänger
Forum-Anfänger
Beiträge: 13
Registriert: Mo 17. Aug 2015, 21:06

pgfplot: Überlappende y tick labels positionieren

Beitrag von Orikson »

Ich mal wieder mit einem Problem zu einem Diagram. Bei diesem ist nahe der Nulllinie ein weiterer ytick mit dazugehörendem Label welches sich nun aber mit dem Null-Label überschneidet. Ich frage mich nun wie ich diese Labels am besten umpositioniere damit das eben nicht mehr passiert. Ein yshift verschiebt ja alle Beschriftungen nach unten und hilft genauso wenig wie eine Rotation. Die Schrift verkleinern möchte ich nicht da diese dann nicht mehr mit dem Rest übereinstimmt. Genauso kann ich xmin und xmax nicht verändern da sonst das Verhältnis der Werte nicht mehr passt...

Vor einiger Zeit habe ich schon eine Lösung zu diesem Problem gefunden. Da ich das Problem damals aber noch nicht hatte habe ich es nicht weiter angesehen und jetzt finde ich es natürlich auch nicht mehr... Die Lösung sah aber aus wie im angehängtem Bild bei welchem die Labels jeweils nach oben/unten verschoben werden und mit der Position im Diagram verbunden waren. Natürlich könnte ich das auch manuel einzeichnen, ich frage mich aber ob es dafür nicht eine automatische Lösung gibt.
\documentclass[a4paper]{scrreprt}

\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
	ymin = -1.5,
	ymax = 2.5,
	grid = major,
	ytick = {2, 0, -0.15, -1},
	yticklabels = {$2$, $0$, $0.15$, $-1$}
	]
	\addplot{x};
\end{axis}
\end{tikzpicture}

\end{document}
Dateianhänge
so soll es am Ende aussehen
so soll es am Ende aussehen
Bild1.jpg (21.47 KiB) 1143 mal betrachtet

Noch so einer

Beitrag von Noch so einer »

Ohne die seltsam gebogenen Linien:
\documentclass[a4paper]{scrreprt}

\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
   ymin = -1.5,
   ymax = 2.5,
   grid = major,
   ytick = {2, 0, -0.15, -1},
   yticklabels = {$2$, \raisebox{1mm}{$0$}, \raisebox{-6mm}{$0.15$}, $-1$}
   ]
   \addplot{x};
\end{axis}
\end{tikzpicture}

\end{document}
Theoretisch könnte man mit \tikz vermutlich auch kleine tikz-Grafiken für die Beschriftung verwenden und so die gebogenen Linien dazu bringen. Ich finde das aber ohne die Linien deutlich genug und schöner.

Orikson
Forum-Anfänger
Forum-Anfänger
Beiträge: 13
Registriert: Mo 17. Aug 2015, 21:06

Beitrag von Orikson »

Hallo und danke für die schnelle Antwort.

Die Lösung mit der raisebox gefällt mir ebenfalls gut, so werde ich das nun auch lassen. Allerdings scheint die etwas Probleme mit relativen Angaben und Kommawerten zu haben, mit -0.7\baselineskip macht er gar nichts, mit -1\baselineskip schon :roll:
\raisebox{-0.7\baselineskip} % geht nicht
\raisebox{-1\baselineskip} % geht schon

Antworten