Seite 1 von 1

Diagramm erstellen y-Achse=Summe gleicher Werte

Verfasst: Sa 19. Aug 2017, 13:21
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.
\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?

Re: Diagramm erstellen y-Achse=Summe gleicher Werte

Verfasst: Sa 1. Aug 2020, 11:44
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) 1620 mal betrachtet
\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.