1

我正在尝试从我拥有的一些数据中创建直方图,并且只是为了了解频率和 bin 等,我设置了一个表格,以便将有关直方图的信息放入特定文件中,而不是绘制它。例如,如果我的数据是

11
12 
11
11
15
12
10

然后我得到类似的东西

10 1
11 3
12 2 
15 1 

其中第二列给出了每个条目的频率。但是我注意到的是,当 gnuplot 创建这个文件时,我得到的不是我得到的

10 1
11 3
12 2 
15 1
10 1

即第一个条目在表的末尾再次重复。如果我只想绘制直方图,即这个文件,它很好,没问题。但是我需要做的是以对数刻度绘制频率,如果我不纠正这一点,即每次手动加载文件然后去掉最后一行,这会在趋势的其余部分绘制一个奇怪的点我的数据..我想知道为什么会发生这种情况以及是否有任何方法可以将其关闭?我使用的代码如下:

set table 'tableavalanchesizeGSA'
bw = 50.0
bin(x,s)=s*int(x/s)
plot 'avalanche_size_GSA.dat' using (bin($1,bw)+bw/2.0):(1.0/2048000) smooth frequency    with points
unset table
set logscale y
plot 'tableavalanchesizeGSA' with points title ''

有谁知道为什么会这样?如果有自动关闭它的方法?

4

1 回答 1

1

这种行为是一个gnuplot 错误。为了规避这个错误,您可以head在写入输出文件之前通过管道输出表:

set output "| head -n -2 > tableavalanchesizeGSA"
set table
bw = 50.0
bin(x,s)=s*int(x/s)
plot 'avalanche_size_GSA.dat' using (bin($1,bw)+bw/2.0):(1.0/2048000) smooth frequency with points
unset table

您必须跳过最后两行,因为 gnuplot 在末尾写了一个空行。此外,您必须set output明确使用,在使用 设置输出时,管道似乎不起作用set table "| head ..."

于 2013-08-21T08:56:21.320 回答