来自多个文件的gnuplot中的列叠加直方图

时间:2013-05-07 07:32:33

标签: visualization gnuplot histogram data-visualization

我正在尝试使用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)title columnheader以及其他一些选项,但似乎只有在我有一个包含两个时间戳的文件时才可用(我不确定我能做到这一点,因为我有时在一个文件中有step 2a但在另一个文件中没有;是的,我知道这可能意味着条形之间的颜色不一致。)

由于

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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)

这会添加一个可以抑制或自定义的图例。