2

我有想要在 gnuplot 中绘制的数据,看起来像这样:

1.08 1 4.8
1.53 2 5.9
2.11 3 5.1
2.60 4 6.0

并不是说它非常重要,第一列是遗传算法的运行时间,第二列是世代数,第三列是平均适应度。

如果我用它绘制它plot datafile.dat using 1:3 with lines看起来很好,抽动间隔适当。但是,虽然我希望 x-tics 用时间标记,但我希望 x2-tics 用代号标记。这很容易做到plot datafile.dat using 1:3:x2ticlabels(2) with lines,但对于 x2 轴,它会为数据文件中的每一行添加一个刻度,而不是自动选择适当数量的 tic。

我的完整数据文件有数千个条目,这会导致图表顶部出现抽动间隔的黑色实线,以及放置标签的更大的黑色实线。即使我尝试手动告诉 gnuplot 在图表上放置抽动的频率,使用set x2tics 100它仍然会为每个条目显示它们。有没有办法来解决这个问题?显然,我更喜欢显示自动选择哪些抽动,但如果我必须手动进行,那很好。完整的 gnuplot 配置文件非常基本,只是:

set logscale y 10
set x2tics
plot datafile.dat using 1:3:x2ticlabels(2) with lines
4

1 回答 1

1

这是一个解决方案,它只会为数据文件中的每一行添加一个标签。

plot 'test.dat' u 1:3:x2ticlabels(int($0)%2==0?stringcolumn(2):'')

有点有趣的一件事是抽动与分数不完全一致。我还没弄清楚为什么。有数千个点,您可能不太可能注意到,但对于您的示例数据文件有 4 个点,这很明显。

不幸的是,它仍然在数据文件中的每一行的轴上绘制一个 tic。 set x2tics scale 0会让那些抽动完全消失。

于 2012-07-19T10:42:43.753 回答