von cis » Sa 1. Aug 2020, 11:44
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 (7.52 KiB) 1298 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.
Du suchst also eine Häufigkeitsverteilung, auch bekannt als Histogramm, und diese soll mit pgfplots als Linien- bzw. [tt]sharp plot[/tt] ausgeführt werden (im Unterschied zu der [tt]ybar[/tt]-Darstellung, die hier häufiger vorkommt).
[attachment=0]5555555.png[/attachment]
[code]
\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}[/code]
[size=85]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. [/size]