Ich würde das ebenfalls mit
pgfplots lösen. Mindestens aber - bis auf wenige Ausnahmen (Ticklänge, Balkenbreite, Abmessungen Legendenbild) - nicht die vielen expliziten Angaben in cm machen. Ich habe das jetzt aber so gelassen wie es war.
Anonymous hat geschrieben:Moin
> Ich habe ein Diagramm mit tikz erstellt.
Nun würde ich die Y-Achse gerne in 5er Schritten beschriften, was ich auch geschaftt habe, allerdings sollen diese nur 1cm voneinander Abstand haben und nicht 5cm... Weiss jemand, wie man das hinbekommen kann?
In dem Du die y-Werte als Ticklabel/5 berechnen lässt:
\foreach[evaluate={\y=\i/5}] \i in {5,10,...,15} %Hilfslinien
\draw[gray!50, text=black] (-0.2 cm,\y cm) -- (15.5 cm,\y cm)
node at (-0.5 cm,\y cm) {\i}; %Beschriftung der Hilfslinien
Analog musst Du auch für die Höhen der Säulen vorgehen.
Anonymous hat geschrieben:> Zudem wollte ich unten ein kleines Kästchen machen (eine Art Legende), welche Farbe was bedeutet. Allerdings hat es dieses in das Diagramm eingefügt. Wie kann man machen, dass dies unten angezeigt wird?
Du musst für den Punkt an dem das Legendenbild eingefügt werden soll, einfach nur eine passende Koordinate wählen. Beispiel:
\draw[fill=myorange]
([yshift=-2em]0,0|-current bounding box.south) rectangle +(0.5cm,0.5cm);
Anonymous hat geschrieben:> wie kann man machen, dass lange Titel getrennt werden, also über mehrere "Zeilen" stehen. Eine Beschriftung eines Balkens wäre ziemlich lange...
In dem Du für den Node text width vorgibst oder align=center mit manuell gesetztem Zeilenumbruch.
Gesamtbeispiel:
\documentclass[12pt,a4paper]{report}
\usepackage{tikz}% lädt u.a. auch xcolor
\definecolor{myblue}{HTML}{92dcec}
\definecolor{myorange}{rgb}{1,0.5,0}
\begin{document}
\begin{tikzpicture}
\draw (0cm,0cm) -- (15.5cm,0cm); %Abzisse
\draw (0cm,0cm) -- (0cm,-0.1cm); %linkes Ende der Abzisse
\draw (15.5cm,0cm) -- (15.5cm,-0.1cm)node [below] {Gruppen}; %rechtes Ende der Abzisse
\draw (-0.1cm,0cm) -- (-0.1cm,4.5cm); %Ordinate
\draw (-0.1cm,0cm) -- (-0.2cm,0cm); %unteres Ende der Ordinate
\draw (-0.1cm,4.5cm) -- (-0.2cm,4.5cm) node [left] {Anzahl}; %oberes Ende der Ordinate
\foreach[evaluate={\y=\i/5}] \i in {5,10,...,15} %Hilfslinien
\draw[gray!50, text=black] (-0.2 cm,\y cm) -- (15.5 cm,\y cm)
node at (-0.5 cm,\y cm) {\i}; %Beschriftung der Hilfslinien
\node at (7.5cm,5cm) {Fragebogen}; %Überschrift
\foreach[evaluate={\y=\p/5}] \x/\p/\Gruppe in {%
0.5/13/Halter, %\x ist Anfang der Säulen %\y ist Höhe der Säulen
5.5/10/{Nutztier-\\halter},
10.5/3/{Fach-\\personen}%
}{
\draw[fill=myblue] (\x cm,0cm) rectangle (2cm+\x cm,\y cm) %die Säulen
node at (1cm + \x cm,\y cm + 0.3cm) {\p}; %die Prozente über den Säulen
\node[rotate=45, left,align=center] at (2.2 cm +\x cm,-0.1cm) {\Gruppe}; %Säulenbeschriftung
}
\foreach[evaluate={\y=\p/5}] \x/\p/\Gruppe in {%
2.5/11/Halter,
7.5/3/Nutztierhalter,
12.5/3/Fachpersonen%
}{
\draw[fill=myorange] (\x cm,0cm) rectangle (2cm+\x cm,\y cm) %die Säulen
node at (1cm + \x cm,\y cm + 0.3cm) {\p}; %die Anzahl über den Säulen
}
\draw[fill=myorange]
([yshift=-2em]0,0|-current bounding box.south) rectangle +(0.5cm,0.5cm);
\end{tikzpicture}
\end{document}
Alternative mit
pgfplots und dem von Dir sowieso geladen
pgfplotstable:
\documentclass[12pt,a4paper]{report}
\usepackage{pgfplotstable}% lädt u.a. auch pgfplots,tikz, xcolor, ...
\pgfplotsset{compat=newest}
\usetikzlibrary{arrows.meta}
\definecolor{myblue}{HTML}{92dcec}
\definecolor{myorange}{rgb}{1,0.5,0}
\usepackage[ngerman]{babel}
\begin{document}
\noindent
\begin{tikzpicture}
\pgfplotstableread{
Gruppe I II
Halter 13 11
Nutztierhalter 10 3
Fachpersonen 3 3
}{\data};
\begin{axis}[
width=\linewidth-45pt,
height=4.5cm,
title=Fragebogen,
title style={name=title},
scale only axis,
axis lines=left,
x axis line style={|[left]-|[right]},
y axis line style={|[right]-|[left]},
ylabel=Anzahl,
ymin=0,ymax=20,
ytick={5,10,15},
ymajorgrids,
xlabel=Gruppen,
symbolic x coords={Halter,Nutztierhalter,Fachpersonen},
xticklabels={Halter,Nutztier-\\halter,Fach-\\personen},
xtick=data,
xticklabel style={anchor=east,rotate=45,align=center},
ybar=0pt,
bar width=1.5cm,
enlarge x limits={abs=2cm},
nodes near coords,
legend style={at={(current axis.east|-title.north)},anchor=north east}
]
\addplot[fill=myorange]table[y=I]{\data};
\addlegendentry{Eintrag I}
\addplot[fill=myblue]table[y=II]{\data};
\addlegendentry{Eintrag II}
\end{axis}
\end{tikzpicture}
\end{document}
Ergebnis:
