了解关键字 every 的用法
Understanding the use of the keyword every
我的问题是关于用于对输入数据文件进行采样的关键字 every
(即 .csv
、.dat
等)。我正在阅读说明如下的关键字的文档:
plot 'file' every {<point_incr>}
{:{<block_incr>}
{:{<start_point>}
{:{<start_block>}
{:{<end_point>}
{:<end_block>}}}}}
问题是我无法完全理解如何使其适应数据集。例如,如果我有一些虚拟数据想用来创建条形图,并且数据如下
# first bars group
#x axis #y axis
0 2
0.2 3
0.4 4
0.6 5
0.8 6
#second bars group
1 1
1.2 2
1.4 3
1.6 4
1.8 5
#etc.
3 10
3.2 20
3.4 30
3.6 40
3.8 50
4 20
4.2 30
4.4 40
4.6 50
4.8 60
假设我想从数据中创建四个条形簇。每个街区一个。如何使用关键字的语法?有人可以给我一些例子来更好地理解它的用法吗?提前谢谢你
来自help every
:
The data points to be plotted are selected according to a loop from
<start_point> to <end_point> with increment <point_incr> and the
blocks according to a loop from <start_block> to <end_block> with
increment <block_incr>.
这应该很清楚了,但是,您必须知道块是否由两个(或更多)空行分隔,您必须以不同方式处理它们。检查 help index
。在我看来,文档对数据块、(子)块、数据集等有点混乱...
检查以下示例。我认为这不是您的最终图表,但仍需要一些调整。根据您的详细要求,您可能还需要检查 help histograms
.
例如 every :::i::i
将绘制块 i
中的所有数据点,即从块 i
到块 i
.
代码:
### plotting using "every"
reset session
$Data <<EOD
# first bars group
#x axis #y axis
0 2
0.2 3
0.4 4
0.6 5
0.8 6
#second bars group
1 1
1.2 2
1.4 3
1.6 4
1.8 5
#etc.
3 10
3.2 20
3.4 30
3.6 40
3.8 50
4 20
4.2 30
4.4 40
4.6 50
4.8 60
EOD
set key top left
set boxwidth 0.2
set key out noautotitles
set style fill solid 0.3
set yrange [:70]
plot for [i=0:3] $Data u 1:2 every :::i::i w boxes
### end of code
结果:
如您所见,every
关键字允许您挑选单换行分隔 点 和双换行分隔 blocks 来自你的数据文件。您的示例数据文件显示分为 4 个块的 20 个点。
因此要绘制第一个块(在 gnuplot 中索引为 0),您只需指定结束块,并使用其他 every
参数的默认值。尝试:
plot 'data.txt' every :::::0 with boxes
您的目标似乎是用单独的样式绘制每个块。下面介绍了如何使用一些额外的样式命令来做到这一点。 (请注意我对某些关键字使用了 gnuplot 的 shorthand。)
set key left top
set boxwidth 0.2
p 'data.txt' ev :::0::0 w boxes t 'first',\
'data.txt' ev :::1::1 w boxes t 'second',\
'data.txt' ev :::2::2 w boxes t 'third',\
'data.txt' ev :::3::3 w boxes t 'fourth'
我的问题是关于用于对输入数据文件进行采样的关键字 every
(即 .csv
、.dat
等)。我正在阅读说明如下的关键字的文档:
plot 'file' every {<point_incr>}
{:{<block_incr>}
{:{<start_point>}
{:{<start_block>}
{:{<end_point>}
{:<end_block>}}}}}
问题是我无法完全理解如何使其适应数据集。例如,如果我有一些虚拟数据想用来创建条形图,并且数据如下
# first bars group
#x axis #y axis
0 2
0.2 3
0.4 4
0.6 5
0.8 6
#second bars group
1 1
1.2 2
1.4 3
1.6 4
1.8 5
#etc.
3 10
3.2 20
3.4 30
3.6 40
3.8 50
4 20
4.2 30
4.4 40
4.6 50
4.8 60
假设我想从数据中创建四个条形簇。每个街区一个。如何使用关键字的语法?有人可以给我一些例子来更好地理解它的用法吗?提前谢谢你
来自help every
:
The data points to be plotted are selected according to a loop from <start_point> to <end_point> with increment <point_incr> and the blocks according to a loop from <start_block> to <end_block> with increment <block_incr>.
这应该很清楚了,但是,您必须知道块是否由两个(或更多)空行分隔,您必须以不同方式处理它们。检查 help index
。在我看来,文档对数据块、(子)块、数据集等有点混乱...
检查以下示例。我认为这不是您的最终图表,但仍需要一些调整。根据您的详细要求,您可能还需要检查 help histograms
.
例如 every :::i::i
将绘制块 i
中的所有数据点,即从块 i
到块 i
.
代码:
### plotting using "every"
reset session
$Data <<EOD
# first bars group
#x axis #y axis
0 2
0.2 3
0.4 4
0.6 5
0.8 6
#second bars group
1 1
1.2 2
1.4 3
1.6 4
1.8 5
#etc.
3 10
3.2 20
3.4 30
3.6 40
3.8 50
4 20
4.2 30
4.4 40
4.6 50
4.8 60
EOD
set key top left
set boxwidth 0.2
set key out noautotitles
set style fill solid 0.3
set yrange [:70]
plot for [i=0:3] $Data u 1:2 every :::i::i w boxes
### end of code
结果:
如您所见,every
关键字允许您挑选单换行分隔 点 和双换行分隔 blocks 来自你的数据文件。您的示例数据文件显示分为 4 个块的 20 个点。
因此要绘制第一个块(在 gnuplot 中索引为 0),您只需指定结束块,并使用其他 every
参数的默认值。尝试:
plot 'data.txt' every :::::0 with boxes
您的目标似乎是用单独的样式绘制每个块。下面介绍了如何使用一些额外的样式命令来做到这一点。 (请注意我对某些关键字使用了 gnuplot 的 shorthand。)
set key left top
set boxwidth 0.2
p 'data.txt' ev :::0::0 w boxes t 'first',\
'data.txt' ev :::1::1 w boxes t 'second',\
'data.txt' ev :::2::2 w boxes t 'third',\
'data.txt' ev :::3::3 w boxes t 'fourth'