Diagramm mit tikz

Tabellen und Grafiken erstellen und anordnen


Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Wenn bei Dir die Abbildung wie im ersten Fall im Text stehen sollte, dann wäre wegen der Abstände zum vorherigen und nachfolgenden Text die zweite Variante empfehlenswert.
\documentclass[12pt,a4paper]{report} 
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{caption}
\usepackage{mwe}

\begin{document} 
\blindtext

\noindent
\begin{minipage}{\linewidth}
\centering
\includegraphics[width=.5\linewidth]{example-image}
\captionof{figure}{Beschriftung}
\end{minipage}

\Blindtext[2]

\begin{center}
\begin{minipage}{\linewidth}
\centering
\includegraphics[width=.5\linewidth]{example-image}
\captionof{figure}{Beschriftung}
\end{minipage}
\end{center}

\blindtext
\end{document}
Der Befehl \pgfplotstableread wird übrigens in der Dokumentation von pgfplotstable erklärt.

Gast

Beitrag von Gast »

Danke für den Tipp Bartman! :)
> der zweite orange Balken ist eigentlich unbekannt. Kann man dort anstatt 10 auch eine x oder z schreiben und die Farbe auf grau wechseln? Sodass nur dieser Balken eine andere Farbe hat? Er sollte aber trotzdem an 3. Stelle stehen und eine gewisse Grösse aufweisen (Grösse null auch möglich). Daran bin ich leider gescheitert...
Mit unbekannt meine ich übrigens, dass die Höhe nicht klar ist. Ich würde deshalb gerne eine andere Farbe, aber eine bestimmte Höhe (z.B. 0 oder auch 5 oder so) wählen und einfügen. Die Zahl soll dann allerdings nicht über dem Balken stehen, sondern mit einer Variablen ersetzt werden.

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

Beitrag von esdd »

Wenn Du einen einzelnen Balken anders färben willst, dann ist da etwas mehr Aufwand nötig. Im folgenden Beispiel nutze ich jetzt nicht mehr die symbolischen Koordinaten. Stattdessen nehme ich den Zeilenindizes als x-Werte, die aber entsprechend beschriftet werden.
\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{caption} 
\usepackage[ngerman]{babel} 
\usepackage[utf8]{inputenc} 
\begin{document} 
\noindent 
\begin{minipage}{\linewidth} 
\begin{tikzpicture} 

\pgfplotstableread{ 
Gruppe  I    II 
Hallo   13   11 
dies    10   3 
Fach    3    3 
}{\data}; 

\begin{axis}[ 
  width=\linewidth-45pt, 
  height=4.5cm, 
  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, 
  xtick={0,...,3},
  xticklabels={Hallo-Hallo,dies und das\\und jenes\\und noch etwas,Fach-\\personen}, 
  xticklabel style={anchor=east,rotate=45,align=center}, 
  ybar=0pt, 
  bar width=1.5cm, 
  enlarge x limits={abs=2cm}, 
  nodes near coords, 
  legend style={yshift=.75cm, column sep=1mm}, 
  legend cell align=left 
] 
\addplot[fill=myorange]
  table[
    x expr=\coordindex,
    y=I,
    skip coords between index={1}{2}% Koordinate mit Index 1 auslassen (Index startet bei 0)
  ]{\data};
\addplot[
    fill=gray,
    forget plot,% kein Einfluss auf Legende, kein Einfluss auf Verschiebung weiterer Plots
    bar shift=-.5*\pgfkeysvalueof{/pgf/bar width},% Korrektur der Verschiebung für diesen Plot
    point meta={TeX code symbolic=\def\pgfplotspointmeta{$x$}}% Vorgabe der Beschriftung des Balkens
  ]
  table[
    x expr=\coordindex,
    y expr={\coordindex==1?\thisrow{I}:nan}% nur Balken mit Koordinatenindex 1 verwenden
  ]{\data};
\addlegendentry{verschickt} 
\addplot[fill=myblue]table[x expr=\coordindex,y=II]{\data}; 
\addlegendentry{ausgefüllt zurück erhalten} 
\end{axis} 
\end{tikzpicture} 
\captionof{figure}{Anzahl der verschickten im Vergleich zur Anzahl der ausgefüllt zurück erhaltenen Umfragen} 
\end{minipage} 
\end{document}
In der Tabelle mit den Daten fungieren (eine beliebige Anzahl) Leerzeichen als Spaltentrenner. Du kannst also eine dritte Datenreihe dahinter setzen, musst nur jeweils mindestens ein Leerzeichen davor einfügen.

Gast

Beitrag von Gast »

Moin esdd

Herzlichen Dank für die Lösung meines Problems!! :D

Antworten