Diagramm erstellen y-Achse=Summe gleicher Werte

Tabellen und Grafiken erstellen und anordnen


Akosol
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Sa 19. Aug 2017, 13:04

Diagramm erstellen y-Achse=Summe gleicher Werte

Beitrag von Akosol »

Hallo zusammen,
ich versuche derzeit ein Diagramm zu erstellen, für welches ich die Werte, die auf der x-Achse eingetragen werden, aus einer Datei ziehe.
Die y-Werte sollen durch die Häufigkeit gleicher Werte errechnet werden.
Das Bild stellt die Anforderung nochmal dar.
Leider konnte ich im großen weiten Internet bisher keine passende Lösung oder Fragestellung dazu finden.

Code: Alles auswählen

\documentclass[paper=a4,12pt,version=last]{scrartcl}
\usepackage{pgfplots}

\begin{document}
	\begin{tikzpicture}
	\begin{axis}[ymin=0,
		x tick label style={/pgf/number format/1000 sep=},
		xlabel={values},
		y tick label style={/pgf/number format/1000 sep=},
		ylabel={amount of values}]
		\addplot table [ ... ,col sep=semicolon]  {data.csv};
	\end{axis}
	\end{tikzpicture}
\end{document}
Das ist mein Minimalbeispiel so weit. Da, wo die drei Punkte sind, müsste ein entsprechender Befehl rein. Die Datei beinhaltet eine Spalte mit Zahlen (für die x-Achse) in beliebiger Reihenfolge.
Gibt es da irgendeine Möglichkeit, Latex die Summe berechnen zu lassen?
Dateianhänge
Diagram-draft.jpg
Diagram-draft.jpg (557.68 KiB) 347 mal betrachtet

cis
Forum-Anfänger
Forum-Anfänger
Beiträge: 24
Registriert: Mi 22. Jul 2020, 20:14

Re: Diagramm erstellen y-Achse=Summe gleicher Werte

Beitrag von cis »

Du suchst also eine Häufigkeitsverteilung, auch bekannt als Histogramm, und diese soll mit pgfplots als Linien- bzw. sharp plot ausgeführt werden (im Unterschied zu der ybar-Darstellung, die hier häufiger vorkommt).

5555555.png
5555555.png (7.52 KiB) 55 mal betrachtet

Code: Alles auswählen

\documentclass[a4paper]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\usepgfplotslibrary{statistics}

\pgfplotstableread[header=false]{
1
2
2
3
3
3
4
4
4
4
5
5
5
6
6
7
7
9
9
9
}\mydata


\begin{document}
% Maximum finden =====
\pgfplotstablegetrowsof{\mydata}
\pgfmathsetmacro{\RowsNo}{\pgfplotsretval-1}  
%\RowsNo \pgfmathsetmacro\xMax{0} \foreach \n in {0,...,\RowsNo}{ \pgfplotstablegetelem{\n}{0}\of{\mydata} \pgfmathsetmacro\xMax{\pgfplotsretval > \xMax ? \pgfplotsretval : \xMax} \xdef\xMax{\xMax} } %Maximalwert: \xMax %\pgfmathtruncatemacro\xMaxP{\xMax-1} \pgfmathtruncatemacro\xMaxS{\xMax+1} % ===== \begin{tikzpicture} \begin{axis}[ xmin=0, ymin=0, xmax=\xMax+0.5, domain=0:\xMax, axis lines=left, axis equal, grid=both, xtick={0,...,\xMax}, ytick={0,1,...,22}, xlabel=Wert, ylabel=Häufigkeit, title=Histogramm, ] \addplot+ [ hist={ bins=\xMax, data min=1, data max=\xMaxS, % = \xMax + 1 handler/.style={sharp plot}, intervals=false }, ] table[y index=0]{\mydata}; \end{axis} \end{tikzpicture} \end{document}

PS: Du siehst, es war keine große Kunst, einen entsprechenden Datensatz als Tabelle zu ergänzen. Da Du das beim Code im Startpost ausgelassen hast, dürftest Du auch 2 Jahre keine Antwort erhalten haben.


Antworten