gnuplot - 使用条件绘制直方图

标签 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.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

我得到了正确的直方图:

right histo

但是如果我使用条件行:

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

我明白了:

histo wrong

您可以看到 gnuplot 没有正确添加行,而是将它们绘制为单独的列。

有什么办法可以解决这个问题吗?谢谢!

最佳答案

我怀疑这是 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

现在 gnuplot 只能看到您想要的数据(因为它看不到任何 NaN 值,因此它不会创建任何新计数器)。

关于gnuplot - 使用条件绘制直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12091156/

相关文章:

linux - Gnuplot 从不同的 CSV 列构造 timefmt?

macos - gnuplot pdfcairo 未命名的 Type 3 字体在 macos 上的输出中

debugging - gnuplot 中的 Printf 调试

python - 同一图上的多个二维直方图

python - 为条形图中的每个条形设置恒定宽度

loops - 如何使用 gnuplot 在连续图中绘制多个数据文件

plot - 如何在大型数组数据文件 gnuplot 中找到最大条目?

r - 如何编辑现有的直方图(或任何图表)?

python - 将散点数据转换为误差条等于标准差的分箱数据

sql - 如何在 SQL 中制作对数直方图?