1

我正在尝试使用 gnuplot 查看一些分析数据;我有几个文件,每个文件格式如下:

file_runXX.dat:
elapsed time, stage
elapsed time, stage

例如:

0 foo
1 step_1
1.5 step_2
2.3 step_3

0 bar
0.75 step_1 
1.3 step_2
2.1 step_3

为了绘制它们,我使用:

set style data histogram
set style histogram columnstack
plot for [i=1:2] sprintf("%02d.log", i) using 1

我得到一个带有两个垂直条的图表:在 x=0 处,我有一个从 y=0 到 y=1 的条形,然后 y=1 到 y=1.5 和 y=1.5 到 y=2.3。在 x=1 时,我有来自第二个文件的相同数据。

两个问题:

(a) 这是执行此操作的正确方法(即,它有效,但有更好的方法吗?),以及

(b) 如何将 xlabels 设置为读取“foo”和“bar”(参见每个文件的第 2 列第 1 行)?我尝试过使用using 1:xtic(2)ortitle columnheader和其他一些选项,但它似乎只有在我有一个包含两个时间戳的文件时才可用(我不确定我能做到这一点,因为我有时step 2a在一个文件中但不在其他;是的,我知道这可能意味着条形之间的颜色不会是统一的)。

谢谢

4

2 回答 2

1

您可以将所有数据合并到一个制表符分隔的文件 all.dat 中:

foo bar
1   .75
1.5 1.3
2.3 2.1

然后使用以下命令:

set style data histograms
set style histogram columnstacked
set boxwidth .7
plot for [COL=1:2] "all.dat" using COL title columnhead
于 2013-05-20T10:53:01.373 回答
1

或者您可以转置数据:

#label  step_1  step_2  step_3
foo     1       1.5     2.3
bar     .75     1.3     2.1

...然后使用以下命令:

set style data histograms
set boxwidth .7
set style histogram rowstacked
plot for [COL=2:4] "all.dat" using COL:xticlabels(1)

这会添加一个您可以隐藏或自定义的图例。

于 2013-05-20T10:59:49.107 回答