Tikz Plots - Achsenbeschriftung links außen und unten

Tabellen und Grafiken erstellen und anordnen


PatrickBeck
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Fr 15. Nov 2013, 20:14

Tikz Plots - Achsenbeschriftung links außen und unten

Beitrag von PatrickBeck »

Hallo liebes Forum,
ich bin ganz neu hier und auch in Latex ein Neuling.
Ich habe gerade folgendes Problem, bei dem ich um eure Hilfe bitten möchte:
Ich versuche ein Diagramm zu erstellen, bei dem ich dimensionlos und ohne automatiiserte Beschricftung der Achse Graph qualitativ darstellen kann.
Hierzu mein Versuch:
\begin{figure}[h]
\centering
\begin{tikzpicture}[scale=1]
\begin{axis}
[width=0.5\textwidth, height=0.4\textheight,
axis x line=bottom,
axis y line=left,
xmax=3.1,
ymax=1.1,
xtick=\empty,
ytick=\empty
]
\pgfplotstableread{_test/prinzip_diagramm.txt} \datatable
%x	y
%0	0
%1	0
%1	1
%2	1
%2	0
%3	0
\addplot [color=black, solid, mark=none] table[x=x, y=y] from  \datatable;
\draw(0,100) node[right] {$\sigma$};
\end{axis}
\end{tikzpicture}
\caption{Testdiagramm}
\label{Testdiagramm}
\end{figure}
Nun würde ich gerne die y-Achse noch mit Sigma am Ende der Achse beschriften; außen nach links versetzt.
Da funktioniert bei mir aber nur nach rewchts versetzt (oder unten).

Vielen Dank im Voraus

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Mit Hilfe der Optionen ylabel und label style bzw. ylabel style kann man das zum Beispiel so erreichen:
\documentclass{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\usepackage{pgfplotstable}

\usepackage{filecontents}
\begin{filecontents}{daten.txt}
 x y 
 0 0 
 1 0 
 1 1 
 2 1 
 2 0 
 3 0 
\end{filecontents}

\begin{document}
\begin{center}
  \begin{minipage}{\textwidth}
    \centering 
    \begin{tikzpicture}
      \begin{axis} [width=0.5\textwidth, height=0.4\textheight, 
          axis x line=bottom,axis y line=left, 
          enlargelimits=upper,
          %xmax=3.1,ymax=1.1, 
          xtick=\empty,ytick=\empty,
          label style={at={(ticklabel cs:1)}}, ylabel style={rotate=-90},
          xlabel=x, ylabel={$\sigma$}] 
        \pgfplotstableread{daten.txt} \datatable 
        \addplot [mark=none] table[x=x, y=y] from \datatable; 
      \end{axis} 
    \end{tikzpicture} 
    \captionof{figure}{Testdiagramm}\label{Testdiagramm} 
  \end{minipage}
\end{center}
\end{document}
Gruß
Elke

PatrickBeck
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Fr 15. Nov 2013, 20:14

Beitrag von PatrickBeck »

Vielen Dank Elke,
jetzt hätte ich noch zwei kleine Fragen:
- Wie bekomme ich denn die Beschriftung näher an die Achsen? So ist sie je doch recht weit entfernt. ylabel near ticks überschreibt dann doch den Rest, oder?!
- Wie kann ich den Diagrammbereich auch nach rechts erweitern? enlargelimits=????
Vielen Dank,
Patrick

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Du kannst die Achsenbeschriftung zum Beispiel auch so setzen:
\documentclass{scrartcl} 
\usepackage{pgfplots} 
\pgfplotsset{compat=1.3} 
\usepackage{pgfplotstable} 

\usepackage{filecontents} 
\begin{filecontents}{daten.txt} 
  x y 
  0 0 
  1 0 
  1 1 
  2 1 
  2 0 
  3 0 
\end{filecontents} 

\begin{document} 
\begin{center} 
   \begin{minipage}{\textwidth} 
     \centering 
     \begin{tikzpicture} 
       \begin{axis} [width=0.5\textwidth, height=0.4\textheight, 
           axis x line=bottom,axis y line=left, 
           enlargelimits=upper, 
           %xmax=3.1,ymax=1.1,  
           xtick=\empty,ytick=\empty,
           xlabel style={at={(1,0)}},% unterhalb Ecke unten rechts
           ylabel style={rotate=-90, at={(0,1)},inner sep=1pt},% neben Ecke oben links
           xlabel=x, ylabel={$\sigma$}] 
         \pgfplotstableread{daten.txt} \datatable 
         \addplot [mark=none,red,very thick] table[x=x, y=y] from \datatable; 
       \end{axis} 
     \end{tikzpicture} 
     \captionof{figure}{Testdiagramm}\label{Testdiagramm} 
   \end{minipage} 
\end{center} 
\end{document}
Die Beschriftungen werden jeweils in Knoten gesetzt, deren inner sep du ändern kannst.

enlargelimits=upper erweitert die y-Achse nach oben und die x-Achse nach rechts. Wenn du nur eine Achse erweitern willst, dann musst du enlarge y limits oder analog enlarge x limits. Näheres dazu findest du in der Dokumentation zupgfplots.

Gruß
Elke

Antworten