Finetuning y-bar pgfplots

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Finetuning y-bar pgfplots

von esdd » Mo 16. Jun 2014, 13:22

nodes near coords={\pgfmathprintnumber[precision=2,zerofill,fixed]{\pgfplotspointmeta}}
Gruß
Elke

PS: Schau dir bitte an, was der Status Rückfrage bedeutet.

von prankenandi » Mo 16. Jun 2014, 10:17

Hallo Elke,

vielen Dank für deine Antwort. Es hat alles gut funktioniert.

Ich hatte eine extra Datei für mein Beispiel erstellt, da ist mir wohl der Fehler mit 2x Babel durch das Quick-sheet-tool im texmaker entstanden.

Bei siunitx verwende ich schon eine neuere Version. Der gleiche Fehler ist mir auch vor einiger Zeit aufgefallen. Als ich angefangen SIunitx zu nutzen, kam ich irgendwie an ein altes Package-manual und deswegen die alten Optionenbezeichnungen. Hab dies aber nun schon abgeändert.

Ich denke ich verwende die pgfplotversion 1.9. Hab letztes Jahr eine Texlive-Komplettinstallation gemacht und auf diesen Stand sind alle meine Pakete.

Eine Frage noch, ich benutze nun noch "nods near cords".
Ist es möglich das Zahlenformat auf 2 Nachkommastellen zu ändern, auch wenn eine Null da steht?
Ich hab es mit
/pgf/number format/precision=2,
/pgf/number format/fixed zerofill=true,
/pgf/number format/fixed,
probiert, aber das erweitert mir auch die Achsennummerierung auf 2 Nachkommastellen.

Ich dachte irgendwie in der Art
\pgfplotsset{ every nodes near coords/.append style={
/pgf/number format/precision=2,
/pgf/number format/fixed zerofill=true,
/pgf/number format/fixed}}
Ich hab es aber noch nicht ausprobiert, wollte nur mal fragen ob du evtl. so aus dem kalten sagen kannst ob das so möglich ware?

MfG

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?

Finetuning y-bar pgfplots

von prankenandi » So 15. Jun 2014, 20:59

Hallo,

ich möchte gerne etwas mit y-bar darstellen.
Zuerst wollte ich y-bar-stacked nutzen, da ich aber auch negative Werte darstellen muss hab ich y-bar genommen und die Verschiebung einfach auf 0 gesetzt.
Das Diagramm steht auch soweit. Nun hab ich nur 1...2 kleinere Sachen bzgl. Darstellung die ich nicht hinbekomme.

1. In meinen x-labels nutze ich Indizes. Das funktioniert auch soweit, allerdings würde ich diese gerne aufrecht stehend haben. Sobald ich aber das Tiefgestellte in ein \mathrm{} tue, bekomme ich Fehlermeldungen. Ebenso auch wenn ich keine Matheumgebung nutze und es mit \textsubscript tiefstellen will.
Meine Frage nun, mache ich etwas falsch oder ist es das ein Problem bei pgfplots?

2. Wie bekomme ich die kleinen x-ticks an der x-Achse weg?
Ich habe es schon mit "every major x tick" und "major tick length=0pt" probiert, aber da verschwinden auch immer meine x-tick-labels. Ich möchte wirklich nur die kleinen x-ticks-unter den Balken weg haben.

3. Wie kann ich alle 3 Balken etwas näher zusammenrücken und weiter weg von der y-Achse ?


Danke im Voraus!

MfG


\documentclass[12pt,a4paper,twoside=false]{scrreprt}

\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}

\usepackage{graphicx}

\usepackage{lmodern}

\usepackage[ngerman]{babel}

\usepackage{subscript}

\usepackage{siunitx}							%Package fuer Darstellung von Werten und Einheiten
\sisetup{decimalsymbol=comma,
			locale=DE,							%deutsche Darstellungsweise bestimmter Einheitenteile
			xspace=true,							%abhängiges Leerzeichen nach der Einheit
			per=fraction,							%Definition das "per" einen Bruch darstellt
			fraction=nice,							%"schräger" Bruch, d.h. alles auf einer Zeile
			obeyfamily=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{center}
  \begin{tikzpicture}
%
		\begin{axis}[
		%width=\textwidth,		
		ybar,
		xtick align=outside,
		bar width=25pt,
		axis x line*=middle,
		axis y line=left,
		axis on top=true,
		ylabel=Y-Achse,
		y unit=\si{\percent},
		symbolic x coords= {$tool_{tief}=1$,$tool_{tief}=2$,$tool_{tief}=3$},
		xtick=data,
		%xmajorticks=false,
		%every major x tick={tickwidth={0pt}},
		xticklabel shift=1.5cm,
		x tick label style={rotate=45,anchor=north east},
		]
			\addplot[green!70!black, fill=green!70!black, bar shift=0pt] coordinates{($tool_{tief}=1$,3) ($tool_{tief}=2$,3) ($tool_{tief}=3$,3)};
			\addplot[red, fill=red] coordinates{($tool_{tief}=1$,1) ($tool_{tief}=2$,1) ($tool_{tief}=3$,1)};
			\addplot[blue, fill=blue, bar shift=0pt] coordinates{($tool_{tief}=1$,-1) ($tool_{tief}=2$,-1) ($tool_{tief}=3$,-1)};
		\end{axis}
	\end{tikzpicture}
\end{center}
%
\end{document}

Nach oben