Gnuplot:xtic显示每个给定数量的数据元素

时间:2014-02-12 20:05:05

标签: graph plot gnuplot bar-chart

我只想说我是gnuplot的新手...... 试图从文件中绘图:

"Dataset " "Min_sup (%)" Itemsets "Rules " "Exec_time (s)"  
Giorno_1 0.1 16392 260337 15.23  
Giorno_1 0.2 9719 155963 11.96  
Giorno_1 5.0 275 2495 6.43  
Giorno_2 0.1 15023 212058 14.14  
Giorno_2 0.2 8503 115766 14.62  
Giorno_2 0.4 2962 43710 12.90  
Giorno_2 0.8 1603 17514 10.53  
Giorno_2 1.0 1223 14701 9.96 

我想使用“Min_sup”列和“数据集”列作为x轴绘图。这是问题所在:正如您所看到的“数据集”列具有重复的值,我想在图表中只显示一次。

所以基本上我正在寻找一种方法来选择何时绘制x2tics。

Link to the graph

我正在使用的gnuplot脚本是:

set style data histograms  
set grid  
set terminal png nocrop enhanced font verdana 12 size 1024,768  
set output "graph.png"  
set xtics norangelimit   
set xtics border in scale 1,0.5 nomirror rotate by -45  offset character 0, 0  
set x2tics ("dataset1" "Giorno_1","dataset2" 2,"dataset3" 3,"dataset4" 4,"dataset5" 5,"dataset6" 6)  
set x2tics scale 10  
set xlabel "Minimum support in %"  
set ylabel "# of "  
set style fill transparent solid 0.6 noborder  
set datafile separator " "  
plot 'prova.dat' using 4:xtic(2):x2ticlabels(1) title col , \  
'prova.dat' using 3:xtic(2):x2ticlabels(1) title col

1 个答案:

答案 0 :(得分:3)

这样做有点棘手。基本上,您必须保存当前行和上一行的“数据集”值并进行比较。如果它们相同,则不要设置新的x2ticlabel,其他将其用作新标签。

值与using命令一起存储:

s1 = ''
s2 = ''
plot 'prova.dat' using (s2 = s1, s1 = stringcolumn(1), $4):...

此处,s2被赋予s1的值,因此保留前一行的值。然后,为s1分配第一列的字符串值。使用$4,使用第四列。这与比较无关,但是使用语句的“正常”部分(using 4using ($4)几乎相同)。

检查在x2ticlabel功能中完成:

x2tic(s1 eq s2 ? 1/0 : s1)

如果s1s1相等,则使用变量s2的值作为x2ticlabel。否则它使用1/0。有了这个,你会得到一些Tic label does not evaluate as string!的警告,但这就是你想要的。

最后,我从您的脚本中删除了一些默认设置:

set terminal png nocrop enhanced font verdana 12 size 1024,768
set output "graph.png"

set style data histograms
set grid
set xtics nomirror rotate by -45
set x2tics left scale 10
set xlabel "Minimum support in %"
set ylabel "# of "
set style fill transparent solid 0.6 noborder

s1=''; s2='';
plot 'prova.dat' using (s2 = s1, s1 = stringcolumn(1), $4):xtic(2):x2tic(s1 eq s2 ? 1/0 : s1)  title col , \
'prova.dat' using 3 title col

给予(4.6.3):

enter image description here