Ich habe folgenden funktionierenden Code für ein Diagramm:

Open in Online-Editor
\documentclass[12pt,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{patterns}
\pgfkeys{/pgf/number format/.cd ,use comma ,set thousands separator={ }}  
\pgfplotsset{ every axis label/.append style={font=\scriptsize},  
every tick label/.append style={font=\scriptsize}} % globale Einstellungen.
\pgfplotsset{scaled y ticks=false} %keine wiss. notation bei achsen

\begin{document}
% nur eine Säule anzeigen
\pgfplotsset{/pgfplots/ybar legend/.style={
        /pgfplots/legend image code/.code={\draw[##1,/tikz/.cd,bar
width=3pt,yshift=-0.2em,bar shift=0pt] plot coordinates {(0cm,0.8em)
};},
    }}

 begin{figure}[h!]
\centering
\begin{tikzpicture}
\begin{axis}[
width=\textwidth,
    height=8cm,
    ymax = 70000,
legend style={at={(0.5,-0.5)},
anchor=north,legend columns=-1, draw=none},
ybar,
xtick = {1,2,3,4,5,6,7,8,9,10,11,12,13,14},
x tick label style={rotate=90}, %Achsenbeschriftung drehen
grid,
grid style={dashed}, 
]

\addplot[pattern = north west lines, pattern color = blue]
coordinates {   
(1,1069) (2, 486) (3, 314) (4, 671) (5, 2566) (6, 1324) (7, 912) (8, 4518) (9, 2259) (10, 1539) 
(11, 1086) (12, 2060) (13, 1539) (14, 1086)};

\addplot[pattern = north west lines, pattern color = gray]
coordinates {   
(1,5051) (2, 2268) (3, 1420) (4, 1033) (5, 14948) (6, 8000) (7, 5464) (8, 45249) (9, 25189) (10, 17212)
(11, 12225) (12, 54645) (13, 41152) (14, 29155)};

\draw [black,thick] (0.8,10000) --(4.2,10000)    
node[pos = 0.5,above] {Größe 1};

\draw [black,thick] (4.8,20000) --(7.2,20000)    
node[pos = 0.5,above] {Größe 2};

\draw [black,thick] (7.8,50000) --(11.2,50000)   
node[pos = 0.5,above] {Größe 3};

\draw [black,thick] (11.8,60000)--(14.2,60000)   
node[pos = 0.5,above] {Größe 4};

\legend{alt,neu}
\end{axis} 
\end{tikzpicture}
\end{figure}

\end{document}

Damit erhalte ich folgendes Diagramm: alt text

Anstatt mit Zahlen möchte ich die x-Achse jedoch mit verschiedenen Artikelbezeichnungen beschriften, so wie hier:

alt text

Normalerweise geht das ja dann über symbolic x-coords. Also hiermit:

Open in Online-Editor
symbolic x coords={KBH1 150 A, KBH1 150 B, KBH1 150 C, KBH1 150 D, KBH1 250 B, KBH1 250 C, KBH1 250 D, KBH1 350 A, KBH1 350 B, KBH1 350 C, KBH1 350 D, KBH1 450 B, KBH1 450 C, KBH1 450 D},

xtick={KBH1 150 A, KBH1 150 B, KBH1 150 C, KBH1 150 D, KBH1 250 B, KBH1 250 C, KBH1 250 D, KBH1 350 A, KBH1 350 B, KBH1 350 C, KBH1 350 D, KBH1 450 B, KBH1 450 C, KBH1 450 D},

Nur dann bekomme ich logischerweise eine Fehlermeldung für \draw da es die x-Koordinaten nicht kennt. Schreibe ich nun aber:

Open in Online-Editor
\draw [black,thick] (KBH1 150 A,10000)  --(KBH1 150 D,10000)     
node[pos = 0.5,above] {Größe 1};

Bekomme ich die Fehlermeldung:

Open in Online-Editor
! Package PGF Math Error: Unknown function `KBH1' (in 'KBH1 150 A').See the PGF Math package documentation for explanation.Type H <return> for immediate help.... \end{axis}

! Package PGF Math Error: Unknown function `KBH1' (in 'KBH1 150 A').See the PGF Math package documentation for explanation.Type H <return> for immediate help.... \end{axis}

Wie bekomme ich es also hin, dass ich ein \draw mit symbolic x-coords hinbekomme damit ich sowohl die Artikelbezeichnungen auf der x-Achse erhalte als auch die horizontalen Linien über den Säulen behalte? Im Prinzip brauche ich eine Kombination aus beiden Diagrammen.

Nachtrag: An den Leerzeichen in den symbolic x-coords liegt es nicht, das habe ich bereits getestet mit dem gleichen Fehlermeldungen als Ergebnis.

gefragt 25 Jun '16, 19:14

MG812's gravatar image

MG812
4548
Akzeptiert-Rate: 0%

bearbeitet 26 Jun '16, 11:24

saputello's gravatar image

saputello
11.1k174365


Wenn die Artikelbezeichnungen nur an den Ticks stehen sollen, aber ansonsten die Koordinaten als Zahlen angegeben werden, dann kannst Du

Open in Online-Editor
xtick = {1,...,14},
xticklabels={KBH1 150 A, KBH1 150 B, KBH1 150 C, KBH1 150 D, KBH1 250 B, KBH1 250 C, KBH1 250 D, KBH1 350 A, KBH1 350 B, KBH1 350 C, KBH1 350 D, KBH1 450 B, KBH1 450 C, KBH1 450 D},

nutzen.

alt text

Code:

Open in Online-Editor
\documentclass[12pt,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{patterns}
\pgfkeys{/pgf/number format/.cd ,use comma ,set thousands separator={ }}
\pgfplotsset{% globale Einstellungen.
  label style={font=\scriptsize},
  ticklabel style={font=\scriptsize}, 
  scaled y ticks=false %keine wiss. notation bei achsen
}

\begin{document}
% nur eine Säule anzeigen
\pgfplotsset{/pgfplots/ybar legend/.style={
  /pgfplots/legend image code/.code={
    \draw[##1,/tikz/.cd,bar width=3pt,yshift=-0.2em,bar shift=0pt]
      plot coordinates {(0cm,0.8em)
    };
  },
}}

\begin{figure}[h!]
\centering
\begin{tikzpicture}
\begin{axis}[
  width=\textwidth,
  height=8cm,
  ymax = 70000,
  legend style={
    at={([yshift=-\baselineskip]xticklabel cs:.5)},% <- changed
    anchor=north,legend columns=-1, draw=none},
  ybar,
  bar width=8pt,% <- added: default is 10pt
  xtick = {1,...,14},
  xticklabels={KBH1 150 A, KBH1 150 B, KBH1 150 C, KBH1 150 D, KBH1 250 B, KBH1 250 C, KBH1 250 D, KBH1 350 A, KBH1 350 B, KBH1 350 C, KBH1 350 D, KBH1 450 B, KBH1 450 C, KBH1 450 D},
  x tick label style={rotate=90}, %Achsenbeschriftung drehen
  grid,
  grid style={dashed}, 
]

\addplot[pattern = north west lines, pattern color = blue]
coordinates {   
(1,1069) (2, 486) (3, 314) (4, 671) (5, 2566) (6, 1324) (7, 912) (8, 4518) (9, 2259) (10, 1539) 
(11, 1086) (12, 2060) (13, 1539) (14, 1086)};

\addplot[pattern = north west lines, pattern color = gray]
coordinates {   
(1,5051) (2, 2268) (3, 1420) (4, 1033) (5, 14948) (6, 8000) (7, 5464) (8, 45249) (9, 25189) (10, 17212)
(11, 12225) (12, 54645) (13, 41152) (14, 29155)};

\draw [black,thick] (0.8,10000) --(4.2,10000)    
node[pos = 0.5,above] {Größe 1};

\draw [black,thick] (4.8,20000) --(7.2,20000)    
node[pos = 0.5,above] {Größe 2};

\draw [black,thick] (7.8,50000) --(11.2,50000)   
node[pos = 0.5,above] {Größe 3};

\draw [black,thick] (11.8,60000)--(14.2,60000)   
node[pos = 0.5,above] {Größe 4};

\legend{alt,neu}
\end{axis} 
\end{tikzpicture}
\end{figure}
\end{document}

Würden symbolic x coords verwendet, könnte man sie auch in Koordinatenangaben für den \draw Befehl verwenden, wenn man explizit axis cs angibt:

Open in Online-Editor
\draw [black,thick] 
  (axis cs: KBH1 150 A,10000)
  --(axis cs: KBH1 150 D,10000)node[pos = 0.5,above] {Größe 1}
;
Permanenter link

beantwortet 25 Jun '16, 21:30

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

Danke, dass klappt natürlich :) an 'xticklabels' habe ich gar nicht gedacht, obwohl dass auf der Hand liegt. Naja, manchmal sieht man den Wald vor lauter Bäumen nicht..

(26 Jun '16, 09:37) MG812
1

@MG812: "Danke" geht bei uns mit einem Klick auf den Daumen hoch (kann jeder, der eine Frage oder Antwort gut/hilfreich findet) oder auch mit einem Klick auf den Haken (kann nur der Fragesteller für jeweils eine Antwort). Das hilft anderen Hilfesuchende bei der Orientierung. Gleichzeitig bekommt der Antwortende dafür automatisch Punkte (10 für den Daumen, 15 für den Haken). Zusätzlich Punkte vergeben ist dagegen eigentlich nur sinnvoll, wenn man eine ganz besondere Leistung zusätzlich auszeichnen will.

(26 Jun '16, 11:26) saputello
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:

×731
×298
×9
×3

gestellte Frage: 25 Jun '16, 19:14

Frage wurde gesehen: 9,048 Mal

zuletzt geändert: 26 Jun '16, 11:31