数字列表的直方图

数字列表的直方图

我想绘制一个直方图,最好用 tikz 绘制,从一串数字中绘制分布,例如 124,235,46,399,...

我发现了许多例子,它们展示了如何从数值表绘制直方图,但没有一个例子可以从数字列表中绘制图表。

答案1

您可以使用 将列表读入表中\pgfplotstableread,例如:

\pgfplotstableread{124,235,46,399,150,124,45\\}\data

将列表存储在 中\data

现在,这些数据被读成一行,而对于直方图,pgfplots这些数据则被读成一列。因此,你可以转置表格:

\pgfplotstabletranspose{\coldata}{\data}

现在,您可以按照从表中找到的绘图示例之一来绘制它。

下面是具有频率图和密度图的 MWE。

\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotsset{table/col sep = comma,table/row sep=\\}
\pgfplotstableread{124,235,46,399,150,124,45\\}\data
\pgfplotstabletranspose{\coldata}{\data}
% below only for density plot, example from https://tex.stackexchange.com/a/328855/
\pgfplotstablegetrowsof{\coldata}
\pgfmathsetmacro{\N}{\pgfplotsretval}
\begin{tikzpicture}
\begin{axis}[ybar, ymin=0, ytick distance=1]
\addplot +[
    hist={bins=4, data min=0},
] table {\coldata};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[ybar, ymin=0, ymax=1]
\addplot +[
    hist={bins=4, data min=0},
    y filter/.expression={y/\N},
] table {\coldata};
\end{axis}
\end{tikzpicture}
\end{document}

结果:

在此处输入图片描述

相关内容