Hallo Leute,

für meine Abschlussarbeit möchte ich meine Plots mit Tikz einbinden. Das funktioniert schon ganz gut.

Leider hab ich es noch nicht geschafft, den Rand (Abstand zwischen ylabel und x label) kleiner zu machen.

Es geht mir vor allem um die Abstände (rot eingezeichnet). Da diese bei mehreren Plots nach einander viel Platz von der Seite verbrauchen.

BildMitMaarkierung

Am besten wäre eine Lösung die bei allen Plots mit \tikzset{.... } oder \pgfplotsset{ .... } gleich bei allen Plots den Abstand verkleinert. Vielen Dank für Tipps und Hinweise

Hier ein Lauffähiges Minimalbeispiel von einem Plot

Open in Online-Editor
\documentclass[ngerman, 11pt]{standalone} 
\usepackage[utf8]{inputenc}
\usepackage{amsmath} % algin Umgebung
\usepackage{framed, color}
\definecolor{shadecolor}{gray}{.90}
\usepackage[ngerman]{babel}% deutscher Text.
\usepackage{helvet} % arialähnliche Schriftart
%Matlabtikz
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\newlength{\figurewidth}
\newlength{\figureheight}
\setlength{\figureheight}{0.15\textwidth}
\setlength{\figurewidth}{0.8\textwidth}
\begin{tikzpicture}
\begin{axis}[%
width=\figurewidth,
height=0.948\figureheight,
at={(0\figurewidth,0\figureheight)},
scale only axis,
every outer x axis line/.append style={black},
every x tick label/.append style={font=\color{black}},
xmin=0,
xmax=0.5,
xlabel={$t$ [s]},
xmajorgrids,
every outer y axis line/.append style={black},
every y tick label/.append style={font=\color{black}},
ymin=-20,
ymax=80,
ylabel={$p$ [bar]},
ymajorgrids,
axis background/.style={fill=white},
axis x line*=bottom,
axis y line*=left,
legend style={legend cell align=left,align=left,draw=black}
]
\addplot [color=black!25!red,solid]
table[row sep=crcr]{%
    0   0\\
    0.5 7.416\\
};
\addlegendentry{$p_1$};
\end{axis}
\end{tikzpicture}%
\end{document}

gefragt 15 Okt '15, 11:03

Thomas88's gravatar image

Thomas88
31113
Akzeptiert-Rate: 0%

bearbeitet 07 Feb '16, 11:42

saputello's gravatar image

saputello
11.1k174365

Sehe ich es richtig, dass die ganze Zeichnung nach links verschoben werden soll?

Da dürfte es \noindent\begin{tikzpicture} tun.

Ansonsten ist vll. auch \begin{tikzpicture}[scale=0.75] hilfreich.

Um die Labels zu verschieben:

xlabel={$t$ [s]}, xlabel style ={yshift=1cm, color=red, ...},

(15 Okt '15, 16:08) cis
3

Nur nebenbei: Achsenbeschriftungen wie p [bar] sind nicht normgerecht. Zulässig wäre entweder p/bar oder p in bar. In eckige Klammern schreibt man Formelzeichen, z.B. [p] = bar, was ausgesprochen "Einheit von" bedeutet. Die Schreibeweise {p} = 2 steht übrigens für "Zahlenwert von". Zusammen p = {p}[p].

(15 Okt '15, 16:15) feynman

Danke für eure Hilfe!

Das Skalieren sieht super aus! Allerdings kann ich dann nicht mehr die ganze Breite der Seite nutzen.

Gibt es eine Möglichkeit den Text (xlabel, ylabel, xticklabel, ylabel) des Plots zu verkleinern? Das würde bei meinem Plot wahrscheinlich schon ausreichen!

Danke für den Hinweis mit den Achsenbeschriftungen. Das sollte ich auch noch ändern!

(15 Okt '15, 16:52) Thomas88
1

Wenn es bei Klasse standalone bleiben soll, dann füg mal beim Laden der Klasse noch Option tikz hinzu. Dann wird nämlich die tikzpicture selbst zur Seite. Absatzeinzug etc. spielen dann keine Rolle.

(15 Okt '15, 18:28) saputello

Ansonsten wie @cis schon sagte \noindent, damit der Absatzeinzug vor der tikzpicture unterbleibt. Oben und rechts kann man kaum noch etwas sparen. Wenn man sich die Beschriftung der Achsen anschaut, sieht man, dass da wirklich kaum noch Luft ist.

(15 Okt '15, 18:30) saputello

"Nur nebenbei: Achsenbeschriftungen wie p [bar] sind nicht normgerecht. ...." Ich kenne diese Meinung und auch sämtliche Debatten dazu. Mit Verlaub, das halte ich für Schmarn - die ganze Fachwelt, m.a.W. unzählige Skripte, machen es so. Wichtig bei einer Schreibweise ist, dass man versteht, was gemeint ist und x[e] "x in e (gemessen)" versteht man. Die Diskrepanz ergibt sich, weil auch [x] = e "Einheit von x gleich e" geschrieben wird. Ja sehr viele Schreibweisen haben eben verschiedene Bedeutungen, die erst im Kontext klar werden; so steht z.B. "[...]" auch für die Gaußklammer.

(16 Okt '15, 14:34) cis

@cis: Das SI-System besteht nicht nur aus Einheiten, sondern umfasst auch eine Notation. Wenn wir Notation beliebig machen, brauchen wir auch keine SI-Einheiten mehr. Dann kann ich einfach erklären, dass ich M für Meter verwende und gut ist. Schließlich geht das dann aus dem Kontext aufgrund meiner Erklärung nicht nur hervor, sondern ist dann auch eindeutig. Auch gibt es dann keinen Grund mehr, Einheiten aufrecht zu setzen – Hauptsache aus dem Kontext geht irgendwie hervor, was eine Einheit und was eine Variable ist. Undwarumsollteichdannnochsatzzeichenoäverwendensolangeausdemkontext…

(16 Okt '15, 14:52) saputello

@saputello: Im Normalfall stimme ich Ich Dir zu. In diesem Fall finde ich x in e, also mit "Worten" bzw. mit dem Wort "in" sieht am Diagramm besch... aus. Tatsächlich schreiben z.B. Chemiker gerne L statt l für "Liter"; hat irgendwelche Hintergründe - also m.M.n.: Flexibilität ist angesagt.

(16 Okt '15, 22:38) cis
Ergebnis 5 von 8 show 3 more comments

Schuld an dem linken Rand neben dem Plot sind die Zeilenenden nach den \newlength und \setlength Befehlen, die bei Verwendung der standalone Klasse jeweils ein Leerzeichen einfügen.

Open in Online-Editor
\documentclass{standalone}
\begin{document}
\newlength{\figurewidth}
\newlength{\figureheight}
\setlength{\figureheight}{0.15\textwidth}
\setlength{\figurewidth}{0.8\textwidth}
Text
\end{document}

liefert

alt text

Verwendet man statt dessen

Open in Online-Editor
\documentclass{standalone}
\begin{document}
\newlength{\figurewidth}%
\newlength{\figureheight}%
\setlength{\figureheight}{0.15\textwidth}%
\setlength{\figurewidth}{0.8\textwidth}%
Text
\end{document}

oder

Open in Online-Editor
\documentclass{standalone}
\newlength{\figurewidth}
\newlength{\figureheight}
\setlength{\figureheight}{0.15\textwidth}
\setlength{\figurewidth}{0.8\textwidth}
\begin{document}
Text
\end{document}

bekommt man

alt text

Mit einer Standard- oder KOMA-Script-Klasse würde man dagegen eventuell einen Absatzeinzug bekommen, den man mit noindent unterdrücken könnte.

Die ganzen Label sind im Prinzip nur Nodes, die man sich mit der Option nodes=draw für die tikzpicture Umgebung anzeigen lassen kann. Dann sieht man, das die Beschriftungen tatsächlich bis zum Rand gehen.

alt text

Allerdings kann man noch die Beschriftung der xtick einheitlicher gestalten:

Open in Online-Editor
xticklabel style={/pgf/number format/.cd,precision=2,fixed},

alt text

Man hätte dann mit

Open in Online-Editor
\documentclass[ngerman, 11pt]{standalone} 
\usepackage[utf8]{inputenc}
\usepackage{babel}% deutscher Text.
\usepackage{helvet} % arialähnliche Schriftart
%Matlabtikz
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\definecolor{shadecolor}{gray}{.90}

\newlength{\figurewidth}
\newlength{\figureheight}
\setlength{\figureheight}{0.15\textwidth}
\setlength{\figurewidth}{0.8\textwidth}

\begin{document}
\begin{tikzpicture}%[nodes=draw]
\begin{axis}[%
  width=\figurewidth,
  height=0.948\figureheight,
  at={(0\figurewidth,0\figureheight)},
  scale only axis,
  every outer x axis line/.append style={black},
  every x tick label/.append style={font=\color{black}},
  xmin=0,
  xmax=0.5,
  xlabel={$t$ in s},
  xmajorgrids,
  every outer y axis line/.append style={black},
  every y tick label/.append style={font=\color{black}},
  ymin=-20,
  ymax=80,
  ylabel={$p$ in bar},
  ymajorgrids,
  %axis background/.style={fill=white},
  axis x line*=bottom,
  axis y line*=left,
  legend style={legend cell align=left,align=left,draw=black},
  xticklabel style={/pgf/number format/.cd,precision=2,fixed},
]
\addplot [color=black!25!red,solid]
table[row sep=crcr]{%
    0   0\\
    0.5 7.416\\
};
\addlegendentry{$p_1$};
\end{axis}
\end{tikzpicture}
\end{document}

folgendes Ergebnis

alt text


Bezogen auf einen Kommentar:

Möchte man die Schriftgröße in allen TikZ-Abbildungen verkleinern, dann geht das zum Beispiel mit

Open in Online-Editor
\tikzset{font=\footnotesize}

vorausgesetzt, die font Einstellung wird in den Abbildungen nicht für einzelne oder alle Nodes wieder überschrieben. Genau das passiert aber mit den Ticklabels durch die vermutlich automatisch angegebenen, aber eigentlich überflüssige Optionen

Open in Online-Editor
every x tick label/.append style={font=\color{black}},
every y tick label/.append style={font=\color{black}},

Man könnte jetzt diese Zeilen bei allen Bildern rauslöschen oder in diesen Zeilen die gewünschte Schriftgröße hinter der Farbe ergänzen. Aber man kann auch auf node font ausweichen:

Entweder für alle Nodes mit

Open in Online-Editor
\tikzset{node font=\footnotesize}

oder nur für die Ticklabels:

Open in Online-Editor
\tikzset{font=\footnotesize}
\pgfplotsset{
  compat=newest,
  ticklabel style={node font=\footnotesize},
  xticklabel style={/pgf/number format/precision=2,/pgf/number format/fixed},
  }
Permanenter link

beantwortet 15 Okt '15, 22:28

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 16 Okt '15, 10:44

Perfekte und sehr ausführliche Erklärung, habe dabei viel gelernt! Danke! Es hat super funktioniert. Ohne die Zwischenräume sehen meine Plots jetzt viel besser aus :-)

(16 Okt '15, 01:28) Thomas88

Eine Frage hab ich noch: Wie kann bei den xticklabels und yticklabels die Schriftgröße (fontsize) bei allen Plots ändern?

Den Schriftgrad in xlabels und ylabels hab ich mit

usepackage{anyfontsize}

tikzset{ every picture/.append style={font={fontsize{10pt{10}selectfont}}}

einstellen. Dabei werden allerdings die ticklabels nicht mit verändert.

(16 Okt '15, 09:55) Thomas88
1

Ich würde dann eher font=\small oder font=\footnotesize verwenden. In Deinem Beispiel hat das auf die Ticklabel keinen Einfluss, weil font dort für diese bei jedem Plot neu festgelegt wird auf \color{black}, siehe meine ergänzte Antwort. Eigentlich wäre das aber eine neue Frage gewesen ;-)

(16 Okt '15, 10:47) esdd
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×730
×55
×16

gestellte Frage: 15 Okt '15, 11:03

Frage wurde gesehen: 13,572 Mal

zuletzt geändert: 07 Feb '16, 11:42