Gnuplot 用条件图绘制直方图

Gnuplot 用条件图绘制直方图,gnuplot,histogram,Gnuplot,Histogram,我正在尝试将文件中的数据制作一个柱状图,如下所示: #Column 1 Column 2 # 0.0300 0.2126 1.0000e-4 0.0104 6.0000e-3 0.1299 1.0000e-4 8.0600e-3 1.0000e-4 0.0105 0.0190 0.2204 6.0000e-3 7.4900e-3 1.0000e-4 0.0952 6.0000e-3 7.4200e-3 1.0000e-4 0.0131 0.

我正在尝试将文件中的数据制作一个柱状图,如下所示:

#Column 1   Column 2
#
0.0300      0.2126
1.0000e-4   0.0104
6.0000e-3   0.1299
1.0000e-4   8.0600e-3
1.0000e-4   0.0105
0.0190      0.2204
6.0000e-3   7.4900e-3
1.0000e-4   0.0952
6.0000e-3   7.4200e-3
1.0000e-4   0.0131
0.0190      0.3062
0.0190      0.2561
0.0300      0.9748
0.0300      0.9406
0.0300      0.0139
1.0000e-4   0.0281
0.0300      0.3625
1.0000e-4   0.0945
0.0300      0.5650
1.0000e-4   0.1045
6.0000e-3   0.2362
1.0000e-4   0.0180
1.0000e-4   0.1366
1.0000e-4   0.0195
0.0300      0.4652
0.0190      0.3505
0.0300      0.5146
0.0190      0.4319
6.0000e-3   0.2054
6.0000e-3   0.2377
0.0300      0.5281
1.0000e-4   0.1128
6.0000e-3   0.0623
如果我使用代码:

n=20    #number of intervals
max=0.03 #max value
min=0    #min value
width=(max-min)/n        #interval width
hist(x,width)=width*floor(x/width)+width/2.0

plot 'data' u (hist(\$1,width)):(1.0) smooth freq w boxes lc rgb "blue" lt 1 lw 0.5 notitle
我得到了正确的直方图:

但如果我使用条件行:

plot 'data' u (hist((\$2<=0.5?\$1:1/0),width)):(1.0) smooth freq w boxes lc rgb "blue" lt 1 lw 0.5 notitle

plot'data'u(hist)(\$2我怀疑这是gnuplot处理“缺失”数据的症状。关于缺失数据,以下事实略有不同:

plot 'data' u 1:2 w lines    #connects lines across missing records
plot 'data' u 1:($2) w lines #doesn't connect lines when a missing record is encountered
我怀疑您看到的是这个设计决策的一个稍微不同的症状

不幸的是,它使得典型的gnuplot数据过滤器在这里无用:-(。幸运的是,您的条件很容易移动到
awk

plot "< awk '{if ($2 <= 0.5) {print $0}}' test.dat " u (hist($1,width)):(1.0) smooth freq w boxes lc rgb "blue" lt 1 lw 0.5 notitle

plot“$
”是的,它是一个脚本。无论如何,这不是真正的问题,因为转义
$
不会对第一行
plot
产生任何问题(其中没有条件的那一行)转义
$
在您尝试将内容粘贴到gnuplot脚本中以运行时会出现问题;)。不过不用担心。我为这个(非常有趣)问题添加了一个解决方案。请告诉我是否理解您编写这行的方式。我能告诉您的意思是:如果文件“test.dat”的$2列中的值为Yes,awk脚本只删除第2列中元素值大于0.5的行。(在
awk
中,
$0
是整行,因此它的内容如下:
if(专栏2_value Great!非常感谢@mgilson,我真的很感谢你的帮助。@Gabriel--没问题。一如既往,这是一种荣幸。我喜欢回答gnuplot问题,因为我喜欢gnuplot.)