von esdd » So 15. Jun 2014, 23:52
1. Scheinbar hat pgfplots ein Problem mit Befehlen in den symbolic x coords. Aber da die bei dir so lang und tippaufwändig sind, ist es ohnehin einfacher, sich die xticks mit xtick={1,2,3} vorzugeben und dann entsprechende xticklabels festzulegen. Dannn kann man in den plots 1,2 bzw. 3 verwenden statt die langen Label zu tippen.
2. Du kannst die Breite der xtick mit major tick length=0pt vorgeben.
3. Wenn du die Balken näher beieinander und dafür einen größeren
Abstand zu den Rändern haben möchtest, dann erhöhe enlarge x Limits. Default ist 0.1
Ich habe außerdem wieder die untere x-Achse statt der in der Mitte verwendet, allerdings mit opacity=0, so dass sie nicht sichtbar ist. Dafür sind deine xticklabel automatisch auf der richtigen Höhe.
Die Linie bei y=0 habe ich dafür zusätzlich eingezeichnet
\documentclass[margin=5mm,convert=false]{standalone}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{adieresis={ä}, germandbls={ß}}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\usepackage{siunitx} %Package fuer Darstellung von Werten und Einheiten
\sisetup{output-decimal-marker={,},% neu für das veraltete decimalsymbol=comma,
locale=DE, %deutsche Darstellungsweise bestimmter Einheitenteile
use-xspace=true, %abhängiges Leerzeichen nach der Einheit
per-mode=fraction, %Definition das "per" einen Bruch darstellt
fraction-function=\sfrac, %"schräger" Bruch, d.h. alles auf einer Zeile
detect-family=true %detecting the surrounding font family
}
%pgfplots------------------------------------------------------------------------------------------------
\usepackage{pgfplots}
\pgfplotsset{compat=1.9, %Versionsangabe für Kompatibilität und Freischalten von Optionen
/pgf/number format/1000 sep={}, %kein 1000'er Trennzeichen
/pgf/number format/use comma, %Komma anstatt Punkt zur Darstellung von Nachkomma
}
\usepgfplotslibrary{units} %Einfügen der Einheiten durch separaten Befehl
%-------------------------------------------------------------------------------------------------------
\begin{document}
\begin{tikzpicture}
\begin{axis}[
%width=\textwidth,
ybar,
xtick align=outside,
bar width=25pt,
axis x line*=left,
x axis line style={opacity=0},
axis y line=left,
axis on top=true,
ylabel=Y-Achse,
y unit=\si{\percent},
% Kombination aus xtick und xticklabels statt symbolic x coords
xtick={1,2,3},
xticklabels={$tool_\mathrm{tief}=1$,$tool_\mathrm{tief}=2$,$tool_\mathrm{tief}=3$},
major tick length=0pt,% Länge der xticks
x tick label style={rotate=45,anchor=north east},
enlarge x limits=0.3% verbreitern des Abstandes zu y-Achsen
]
% zusätzliche Linie bei y=0
\draw(current axis.left of origin)--(current axis.right of origin);
\addplot[green!70!black, fill=green!70!black, bar shift=0pt] coordinates{(1,2) (2,3) (3,.5)};
\addplot[red, fill=red] coordinates{(1,1) (2,1) (3,1)};
\addplot[blue, fill=blue, bar shift=0pt] coordinates{(1,-1) (2,-2) (3,-1)};
\end{axis}
\end{tikzpicture}
\end{document}
Gruß
Elke
PS: Du lädst in deinem Code zwei Mal das Paket babel. Außerdem waren die ganzen Optionen von siunitx veraltet oder hast du tatsächlich noch die Version 1 von siunitx? Verwendest du noch die pgfplotsversion 1.9 oder hast du die aktuelle 1.10?
1. Scheinbar hat pgfplots ein Problem mit Befehlen in den symbolic x coords. Aber da die bei dir so lang und tippaufwändig sind, ist es ohnehin einfacher, sich die xticks mit xtick={1,2,3} vorzugeben und dann entsprechende xticklabels festzulegen. Dannn kann man in den plots 1,2 bzw. 3 verwenden statt die langen Label zu tippen.
2. Du kannst die Breite der xtick mit major tick length=0pt vorgeben.
3. Wenn du die Balken näher beieinander und dafür einen größeren
Abstand zu den Rändern haben möchtest, dann erhöhe enlarge x Limits. Default ist 0.1
Ich habe außerdem wieder die untere x-Achse statt der in der Mitte verwendet, allerdings mit opacity=0, so dass sie nicht sichtbar ist. Dafür sind deine xticklabel automatisch auf der richtigen Höhe.
Die Linie bei y=0 habe ich dafür zusätzlich eingezeichnet
[code]\documentclass[margin=5mm,convert=false]{standalone}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{adieresis={ä}, germandbls={ß}}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\usepackage{siunitx} %Package fuer Darstellung von Werten und Einheiten
\sisetup{output-decimal-marker={,},% neu für das veraltete decimalsymbol=comma,
locale=DE, %deutsche Darstellungsweise bestimmter Einheitenteile
use-xspace=true, %abhängiges Leerzeichen nach der Einheit
per-mode=fraction, %Definition das "per" einen Bruch darstellt
fraction-function=\sfrac, %"schräger" Bruch, d.h. alles auf einer Zeile
detect-family=true %detecting the surrounding font family
}
%pgfplots------------------------------------------------------------------------------------------------
\usepackage{pgfplots}
\pgfplotsset{compat=1.9, %Versionsangabe für Kompatibilität und Freischalten von Optionen
/pgf/number format/1000 sep={}, %kein 1000'er Trennzeichen
/pgf/number format/use comma, %Komma anstatt Punkt zur Darstellung von Nachkomma
}
\usepgfplotslibrary{units} %Einfügen der Einheiten durch separaten Befehl
%-------------------------------------------------------------------------------------------------------
\begin{document}
\begin{tikzpicture}
\begin{axis}[
%width=\textwidth,
ybar,
xtick align=outside,
bar width=25pt,
axis x line*=left,
x axis line style={opacity=0},
axis y line=left,
axis on top=true,
ylabel=Y-Achse,
y unit=\si{\percent},
% Kombination aus xtick und xticklabels statt symbolic x coords
xtick={1,2,3},
xticklabels={$tool_\mathrm{tief}=1$,$tool_\mathrm{tief}=2$,$tool_\mathrm{tief}=3$},
major tick length=0pt,% Länge der xticks
x tick label style={rotate=45,anchor=north east},
enlarge x limits=0.3% verbreitern des Abstandes zu y-Achsen
]
% zusätzliche Linie bei y=0
\draw(current axis.left of origin)--(current axis.right of origin);
\addplot[green!70!black, fill=green!70!black, bar shift=0pt] coordinates{(1,2) (2,3) (3,.5)};
\addplot[red, fill=red] coordinates{(1,1) (2,1) (3,1)};
\addplot[blue, fill=blue, bar shift=0pt] coordinates{(1,-1) (2,-2) (3,-1)};
\end{axis}
\end{tikzpicture}
\end{document}[/code]
Gruß
Elke
PS: Du lädst in deinem Code zwei Mal das Paket babel. Außerdem waren die ganzen Optionen von siunitx veraltet oder hast du tatsächlich noch die Version 1 von siunitx? Verwendest du noch die pgfplotsversion 1.9 oder hast du die aktuelle 1.10?