4

k-selection我有一些具有不规则 x 值的数据(算法的基准测试结果)。我明确标记了它们(1、50、100、500、1000、2500 和 5000)。

因为这些值不是线性增加(或指数增加,尽管将 x 轴设为对数刻度确实会稍微改善一些情况,但 bug 会在 1 到 50 之间留下巨大的差距),它们奇怪地散开并聚集在一起。有没有办法缩放 x 轴,以便以均匀的间距绘制这些数据点?

下面是网格间距的示例(标签和图例在 eps 文件中不可见,这些是稍后由 graphicsx 包绘制的)以及我正在使用的 gnuplot 命令。

网格间距

set terminal epslatex

set xlabel 'k'
set ylabel 'seconds'

set tic scale 0
set key Left outside

set xtics rotate
set xtics ('1' 1, '50' 50, '100' 100, '500' 500, '1000' 1000, '2500' 2500, '5000' 5000)

set logscale y
set logscale x
set style data linespoints

set output 'selection.tex'

plot '../data/selection.dat' u 1:($2/1000) t 'Sort', \
     '../data/selection.dat' u 1:($3/1000) t 'Partial Sort', \
     '../data/selection.dat' u 1:($4/1000) t 'Heap', \
     '../data/selection.dat' u 1:($5/1000) t 'Partial Heap', \
     '../data/selection.dat' u 1:($6/1000) t 'Order Statistics'
4

1 回答 1

3

最干净的方法是使用以下xticlabels命令:

plot '../data/selection.dat' u ($2/1000):xticlabels(1) t 'Sort', \...

这从第一列获取值并将其用作 x 轴标签,同时将第二列用作数据。

这有点像使用命令

plot 'file' u 2

它只是将第二列中的数据与虚拟索引 (1,2,3,4...) 进行对比。这为数据点提供了均匀的间距,这似乎是您想要的。

于 2012-11-22T13:56:01.070 回答