Gnuplot,在y轴上绘制带有文本的图形

时间:2014-04-10 17:51:01

标签: gnuplot

我正在尝试使用如下所示的值绘制列表:

directory  file_sizes
dir1         200
dir1         150
dir2         200
dir3          40

理想情况下,y轴将具有x轴上的文本(第一列)和数字(第二列)。我认为点图是最好的,因为我有很多目录(20-30)和数百万个文件。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

这是一个相当脏的gnuplot脚本,它完全在gnuplot内部过滤目录名称。我喜欢肮脏的gnuplot技巧:)

不幸的是,仅当目录名称不包含空格时才有效。如果需要更复杂的过滤,则必须使用外部工具进行预处理。

我们走了:

我们的想法是拥有一个变量list,它包含到目前为止遇到的所有目录名称,用空格分隔。对于任何行,函数add_dir检查当前名称是否已在列表中,如果不存在则添加。为了使其正常工作,您必须使用令牌分隔存储在list中的目录名称,这不会出现在名称本身中,我选择|

对于绘图,函数index使用list内置函数返回words中当前目录的位置(这就是为什么目录名不能包含空格的原因):

list = ''
index(w) = words(substr(list, 0, strstrt(list, w)-1))
add_dir(d) = (strstrt(list, d) == 0 ? list=list.' '.d : '')

set offset 1,1,1,1
plot 'file.txt' using (d='|'.strcol(1).'|', add_dir(d), $2):(index(d)):ytic(1) with points notitle

结果是:

enter image description here