我使用hist plot未能成功。 一个简单的问题是使用以下数据:
age range - frequency - central band width - bin width - height (respectively)
1-4 - 30 - 2.5 - 3 - 10
5-6 - 20 - 5.5 - 1 - 20
7-17 - 30 - 12 - 10 - 3
随着沿X轴的年龄,具有线性刻度,因此1-4的箱宽度将为3,高度为10,箱子宽度为5-6将为1,高度为20,并且7-17将是10,高度是3。
如何将这些数据放入Word /记事本文档.dat
文件中?
然后我如何使用它们在gnuplot
中设置直方图?
答案 0 :(得分:6)
我会使用以下数据文件格式(仅使用空格来分隔字段):
"age range" "frequency" "central band width" "bin width" "height"
1-4 30 2.5 3 10
5-6 20 5.5 1 20
7-17 30 12 10 3
boxes
绘图样式。这允许您使用列中的值作为宽度。 xtic(1)
,您可以将第一列中的条目用作xticlabel。所以一个相当简单的绘图脚本如下所示:
set style fill solid noborder
set yrange [0:*]
set offset 1,1,1,0
plot 'file.txt' using 3:5:4:xtic(1) with boxes notitle
版本4.6.3和pngcairo终端的结果是:
答案 1 :(得分:0)
我昨晚管理了一个相当不错的可变宽度框示例。我正在绘制由FIO存储性能测试包产生的延迟直方图数据。使用我的编译选项,我有1856个箱子,如下所示:
从512-1024 ns(64 bins)
等...
我在绘图时的延迟值以微秒为单位(FIO提供纳秒,但出于历史原因我想要微秒)。我没有机会在我的数据中包含bin宽度。所以我这样做了:
f(x)定义返回给定延迟的框宽度 - 它的工作方式如下:
然后我只在绘图命令中使用f(延迟)作为框宽。
这是有效的 - 就我所知,它似乎完美无缺。它不会给出x< 64 ns,但我没有任何小的数据,所以它可以解决。可以使用条件表达式对该范围的那一部分进行修补。
我认为这里的主要观察结果是:a)您不必将宽度作为文字数据 - 如果您可以根据您拥有的数据进行计算,那么您将获得金色,并且b) column(n)是$ n的替代,作为在plot命令中表示列值的一种方式。在我的情况下,我将所有这些都放在一个bash脚本中,而bash拦截了$ 1。