我正在尝试使用如下所示的值绘制列表:
directory file_sizes
dir1 200
dir1 150
dir2 200
dir3 40
理想情况下,y轴将具有x轴上的文本(第一列)和数字(第二列)。我认为点图是最好的,因为我有很多目录(20-30)和数百万个文件。
有什么想法吗?
答案 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
结果是: